| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 973 人关注过本帖
标题:默认构造函数
只看楼主 加入收藏
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:1 
赶上
2011-04-17 10:38
辰星睿
Rank: 2
等 级:论坛游民
威 望:3
帖 子:33
专家分:63
注 册:2010-12-24
收藏
得分:1 
之所以要有无参构造函数 是因为编译器在建立新对象时的地方会自动插入对构造函数的调用代码 这也是C++程序“例行公事”的必然行为  比如你这个代码例子中的
complex temp;complex total1,total2;定义这些变量时就会用到无参构造 因为你定义的时候便没有参数传递 这也是为什么你说去掉无参构造就出错了的原因 但是你如果去掉无参构造后改成将这两行代码改成 complex temp(参数1,参数2);complex total1(参数1,参数2),total2(参数1,参数2);就能通过编译了 但是这样或许就会和你所要的函数功能实现出现矛盾 所以最好每个类针对实际都加上无参构造函数 这也算是个好的习惯吧
2011-04-17 11:03
辰星睿
Rank: 2
等 级:论坛游民
威 望:3
帖 子:33
专家分:63
注 册:2010-12-24
收藏
得分:0 
之所以要构造函数 是因为编译器在建立新对象时 会自动插入对构造函数的调用代码 这也是c++程序“例行公事”的必然行为 比如你这个代码中的complex temp;和complex total1,total2;都是在调用无参构造函数 所以你在去掉去参构造时会报错 针对你这个例子 你如果去掉无参构造函数后 将这两行改成complex temp(参数1,参数2);后面的total一样这样改 就能通过编译了 因为你这里有有参构造 编译器能找到
2011-04-17 11:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
C++ 标准里明确了这个特征:(节选自 ISO/IEC 14882:2003(E),第12章,第1节,第5条)
A default constructor for a class X is a constructor of class X that can be called without an argument. If there is no user-declared constructor for class X, a default constructor is implicitly declared. An implicitly-declared default constructor is an inline public member of its class. ......
(类X的默认构造函数是指可以被无参数调用的X的构造函数。如果类X没有用户声明的构造函数,则一个构造函数将会被隐式声明。一个隐式声明的构造函数是这个类的一个内联公有成员。)
2011-04-17 11:34
快速回复:默认构造函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020751 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved