构造函数
"对于所有的类,如果不定义构造函数,则编译器生成默认构造函数."
这句话对吗??
问题点数:50、回复次数:30Top
1 楼Januarius_(努力学习J2EE中)回复于 2002-05-18 11:36:37 得分 0
Of course it's right!Top
2 楼Januarius_(努力学习J2EE中)回复于 2002-05-18 11:38:23 得分 0
不过你自己写了默认构造函数后,系统就会调用你的函数Top
3 楼jinbing(若晴)回复于 2002-05-18 11:40:40 得分 0
是对于任何类吗?在vc编译器下呢?Top
4 楼microblue()回复于 2002-05-18 11:42:45 得分 0
是的
Top
5 楼jinbing(若晴)回复于 2002-05-18 11:46:16 得分 0
不会吧,我听有人说"在适当的时候,编译器对没有申明构造函数的类产生默认构造函数",并不是所有的类,为什么??Top
6 楼sbg(宝宝酥)回复于 2002-05-18 11:47:07 得分 30
如果一个类是借着“调用member object 或 base class 的default constructor ”或“为每一个object 初始化其virtual function机制或virtual base class机制”而完成,这样编译器酒会合成一个default constructor 至于没有上述四种情况的有没有声明任何constructor的我们说他们用有的是implicit trivial default constructors 他们实际上并不会被合成出来Top
7 楼sbg(宝宝酥)回复于 2002-05-18 11:47:36 得分 0
这句话错误Top
8 楼jamesfangjing(Bayes)回复于 2002-05-18 11:48:08 得分 0
rightTop
9 楼sandywei(wzs)回复于 2002-05-18 12:07:49 得分 0
不全是这样子,抽象类哪里来的构造函数,如有的话不是可以实例化啦。Top
10 楼jinbing(若晴)回复于 2002-05-18 12:47:47 得分 0
sbg(宝宝酥) ,"他们用有的是implicit trivial default constructors 他们实际上并不会被合成出来"
是什么意思?Top
11 楼jinbing(若晴)回复于 2002-05-18 13:32:29 得分 0
空类class A {}; 不产生构造函数,对吗??Top
12 楼guyu_jj(蓝鸟)回复于 2002-05-18 14:42:22 得分 10
系统会自动产成一个构造函数,不过大多时候是无效的
具体可以参看<<c++物件导向>>
侯捷出的Top
13 楼guyu_jj(蓝鸟)回复于 2002-05-18 14:44:43 得分 0
是<<深度探索c++对象模式>>Top
14 楼sbg(宝宝酥)回复于 2002-05-18 16:14:34 得分 0
意思就是编译器不会合成出 default constructorTop
15 楼superzjx2000(承桴浮于海)回复于 2002-05-18 16:16:44 得分 0
rightTop
16 楼brapler(ANN)回复于 2002-05-19 11:10:45 得分 0
对的.Top
17 楼huang_yi_cn(蓝色的云)回复于 2002-05-19 12:01:28 得分 0
rightTop
18 楼dev_uoboy(【世界】)回复于 2002-05-19 12:40:15 得分 10
错的,你看看 Inside The C++ Object Model 就会了解为什么是错的了。
看第二章。Top
19 楼yn_kmsf(悠然)回复于 2002-05-19 12:57:14 得分 0
dangranTop
20 楼freezhang(free)回复于 2002-05-19 14:54:44 得分 0
无成员数据的类无默认的构造函数
Top
21 楼kof99th(小虫)回复于 2002-05-19 18:58:00 得分 0
对,编译器会自动生成什么都不做的构造函数,仅用来产生对象。Top
22 楼cxlcc2000(水晶)回复于 2002-05-19 20:37:28 得分 0
在c++bulder中可以的Top
23 楼jinbing(若晴)回复于 2002-05-20 09:51:32 得分 0
综合
<<c++ primer>>,
<< inside c++ object model >> ,
<< Effective c++>> item 45,
是不是应该这样:
对于所有的类,如果不定义构造函数,则编译器生成默认构造函数,但不调用.
另,在vc中用debug跟踪空类,编译器没有调用构造函数.
请大家讨论.Top
24 楼jinbing(若晴)回复于 2002-05-20 09:55:35 得分 0
对不起,有句话说错了,
对于所有的类,如果不是"sbg(宝宝酥)说的四种情况"也没有声明构造函数,则编译器生成默认构造函数,但不调用.比如空类.
Top
25 楼jinbing(若晴)回复于 2002-05-20 12:55:28 得分 0
upTop
26 楼ajoo(聪明的一猪)回复于 2002-05-21 04:34:46 得分 0
ni men zou huo ru mo laTop
27 楼yu_yanjie(茉莉妃子)回复于 2002-05-21 08:30:49 得分 0
是对的Top
28 楼asuka(飞鸟)回复于 2002-05-21 08:54:46 得分 0
文字游戏Top
29 楼lizhongkun(泛型)回复于 2002-05-21 09:00:18 得分 0
对于所有的类,如果不是"sbg(宝宝酥)说的四种情况"也没有声明构造函数,则编译器生成默认构造函数,但不调用.比如空类.
不调用,你生出干什么,呵呵Top
30 楼ajoo(聪明的一猪)回复于 2002-05-21 10:03:27 得分 0
"不调用,你生出干什么"
he he. simple, naive le ba?
at runtime, most type information are gone. why do you still need the types?
Top




