分享
 
 
 

深度探索C++对象模型第二章 构造函数语义学

王朝c/c++·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

2.1 Default Constructor 的建构操作

default constructors 在需要的时候才会被编译器产生出来。只有当编译器需要default constructor的时候才会合成出一个constructor, 只有下面的四种情况才会有nontrivial default constructor产生,其余的都是trivial default constructor

1) 带有Default Constructor 的 Member Class Object

如果一个class自己没有定义constructor,但是内含一个member object,而后者含有default constructor,那么次class的implicit default constructor 就是nontrivial,编译器会合成一个constructor .注意被合成出来的constructor 只满足编译器的需要,而不是程序员的需要(只完成他自己向要做的事情)。

如果含有多个class member object ,那么constructor 要求初始化操作按照member object 在class 中的申明次序调用各个的constructors。

2) 带有Default Constructor的Base Class

如果没有定义构造函数,编译器会产生一个nontrivial constructor,先调用相应的base class's constructor . 如果用户自己定义了constructor,那么编译器讲会扩展他,讲义调用所有比要至default constructors的程序代码加进去。

3) 带有一个Virtual Function 的 Class : 因为编译器必须要初始化VPTR 和 VTable!

4) 带有一个Virtual Base Class 的 Class : 在此之中,如果向要通过一个指针访问最顶端的class的data member,必须要通过"指向基类的指针"来完成。 pa->_vbcx->i=1024; 而_vbcx则是在class object的创建的时候完成的。

2.2 Copy Constructor的间够操作

由三种情况使用到Copy Constructor: object作为函数参数传递 函数的返回值是object 直接用一个同类实体最为初值而初始化

如果class没有定义copy constructor,那么编译器可能合成一个copy constructor--memberwise initialization,或者使用bitwise copy

出现不要,bitwise copy的情况和上面的default construcotr的情况一致,

1) class 内含一个member object, 而后者的class具有了一个copy constructor 2)当class 继承一个base class,而base class 好有一个copy constructor 3) class含有Virtual funciton 4) class白绳子一个继承串链,其中具有Virtual base classes .后面两种比较复杂,因为可能出现derived class 和base class之间的对象赋值的情况。必须要保证他们的VPTR的正确性。

2.4下列情况中,必须要使用member initialization list进行data member 的初始化:

1)当初始化一个referecnce member 2)当初始化一个cost member 3)当调用一个base class 的constructor,而他拥有一组参数的时候 4)调用一个member class 的constructor ,而他有一组参数

而kist中的项目次序是由class中的members声明次序决定的,而不是有initialization list中的排列次序决定。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有