default construction
来源:互联网 发布:小甲鱼算法视频怎么样 编辑:程序博客网 时间:2024/06/05 03:20
- 4种情况下编译器会构造出nontrivial(有用)的构造函数
- 带有default construction的member class object
我们有两个class:
class Foo { public: Foo(), Foo(int) … };
class Bar { public: Foo foo; char *str;};- 则编译器会在Bar中合成一个默认的构造函数(看起来像这样):
Bar() { foo.Foo::Foo(); } - 当我们自己定义了Bar一个或以上的构造函数时,编译器会为我们扩张
每一个构造函数。比如我们自己定义:
Bar() { str = 0;}
则编译器就为我们扩张成:
Bar() { foo.Foo::Foo(); str = 0; } - 当有多个需要初始化的成员时,编译器会按照成员的声明次序来初始化成员
- 则编译器会在Bar中合成一个默认的构造函数(看起来像这样):
- 带有default construction的base class
- 声明或继承一个virtual function的class
- 一个virtual function table 会被编译器产生出来,内放class的virtual function 地址。
- 在每个class object中,一个额外的pointer member(vptr)会被编译器合成出来,内含
相关的class vtbl的地址。
- 带有一个virtual base class的class
对于virtual base class中的成员变量,derived class通过存放一个指针,指针中存放
着对应的基类,用这样的方式来访问virtual base class中的成员变量。
所以为了初始化这些指针,编译器会默认构造出或扩张nontrivial构造函数做这些初
始化的工作。
- 带有default construction的member class object
- c++新手常见的两个误解
- 任何class如果没有定义default constructor,就会被合成出来。
- 编译器合成出来的default constructor会明确设定class内每个
datamember的默认值。
这两个没有一个是真的
1 0
- default construction
- Default
- Managing Construction
- Tree Construction
- Road Construction
- Under Construction
- multiviews construction
- uva10720Graph Construction
- construction equipme
- hdu3516Tree Construction
- Elegant Construction
- Word Construction
- Construction method
- Object-Oriented Software Construction
- PostScript中的Path Construction
- Object-Oriented Construction Handbook
- Agile Software Construction
- Agile Software Construction
- 上海Spark Meetup第六次聚会
- 【内容建设】以DEDECMS为例,讲解站内文章编辑的一些注意点,有益无害
- 找工作C++面试资料之问答题整理(1)
- SpringMVC搭建------最简单的实现
- SetTextAlign的TA_RIGHT
- default construction
- 【最小染色】【HNOI 2008】【bzoj 1006】神奇的国度
- ios开发-OC-封装、继承、多态
- 关于@Override在1.5和1.6之后的区别
- 数据结构—二叉搜索树的创建、结点的插入和删除
- bsp_section_work_begin
- 更新SDK以及其他国内镜像资源以及方法(无需翻墙)
- [前端]表格隔行换色和细线边框实例
- 换低档装置(uva-1588)