合成的默认构造函数
2014-10-09 22:00
141 查看
由编译器创建的默认构造函数通常称为合成的默认构造函数,它将依据如同变量初始化的规则初始化类中所有成员。对于具有类类型的成员,则会调用该成员所属类自身的默认构造函数实现初始化,如果该成员所属类不存在默认构造函数,则必须自己定义构造函数以初始化列表方式来对类类型数据成员进行初始化。内置类型成员的初值依赖于对象如何定义。如果对象在全局作用域中定义(即不在任何函数中)或定义为静态局部对象,则这些成员将被初始化为
0。如果对象在局部作用域中定义,则这些成员没有初始化。除了给它们赋值之外,出于其他任何目的对未初始化成员的使用都没有定义。合成的默认构造函数一般适用于仅包含类类型成员的类。而对于含有内置类型或复合类型成员的类,则通常应该定义他们自己的构造函数初始化这些成员。
特别说明,如果要求进行值初始化,则合成的默认构造函数会进行值初始化。像动态生成类类型对象时加了空括号要求值初始化,或者定义顺序容器只提供容器大小时会进行值初始化。
由编译器创建的默认构造函数通常称为合成的默认构造函数,它将依据如同变量初始化的规则初始化类中所有成员。对于具有类类型的成员,则会调用该成员所属类自身的默认构造函数实现初始化,如果该成员所属类不存在默认构造函数,则必须自己定义构造函数以初始化列表方式来对类类型数据成员进行初始化。内置类型成员的初值依赖于对象如何定义。如果对象在全局作用域中定义(即不在任何函数中)或定义为静态局部对象,则这些成员将被初始化为
0。如果对象在局部作用域中定义,则这些成员没有初始化。除了给它们赋值之外,出于其他任何目的对未初始化成员的使用都没有定义。合成的默认构造函数一般适用于仅包含类类型成员的类。而对于含有内置类型或复合类型成员的类,则通常应该定义他们自己的构造函数初始化这些成员。
特别说明,如果要求进行值初始化,则合成的默认构造函数会进行值初始化。像动态生成类类型对象时加了空括号要求值初始化,或者定义顺序容器只提供容器大小时会进行值初始化。
相关文章推荐
- C++:编译器合成默认构造函数和复制控制成员的条件
- C++编译器合成默认构造函数的真相
- C++编译器默认构造函数合成机制分析
- 2.1默认构造函数隐式合成
- 《深度探索C++对象模型》- 编译器合成默认构造函数
- C++编译器合成默认构造函数的条件(合成默认拷贝构造函数雷同)
- C++对象模型——默认构造函数的合成
- 关于C++合成的默认构造函数
- 四种情况,编译器必须为未声明构造函数之class合成一个默认构造函数
- C++ 合成默认构造函数的真相
- C++ 合成默认构造函数的真相
- C++ 中不能依赖合成默认构造函数
- 合成的默认构造函数定义为delete的一种情况(针对C++11标准)
- c++ 编译器为class自动合成默认构造函数的四种情况
- 什么情况下c++编译器会合成默认构造函数
- 合成的默认构造函数定义为delete的一种情况(针对C++11标准)
- 默认构造函数和合成默认构造函数
- 《深度探索c++ 对象模型》有感之默认构造函数,拷贝构造函数,拷贝运算符的合成
- 中英文语音合成与中文语音识别技术在c#中的应用(一)
- 一.合成(Composite)模式