C++类创建初始化的顺序
来源:互联网 发布:ubuntu命令怎么打开 编辑:程序博客网 时间:2024/06/15 19:59
#include<iostream>using namespace std;class A{public:int a;A();};A::A(){cout << "A constructor" << endl;}class B{public:int b;B();};B::B(){cout << "B constructor" << endl;}class C{public:A a;B b;int c;C();};C::C():c(1){cout << a.a << b.b << c << endl;}int main(){C c;}
输出为
A constructor
B constructor
一串数字
即当C的对象c被创建时,A a、B b分别分配空间后先分别进入他们的constructor,而后c对象创建完成后再进入c的constructor。
class A{public:int a;A(int i);};A::A(int i){a = i;cout << "A constructor" << endl;}class B{public:int b;B(int i);};B::B(int i){b = i;cout << "B constructor" << endl;}class C{public:int c;C();private:A a;B b;};C::C():c(1){cout << c << endl;}
如果把类C改为这样, 即初始化列表里没有初始化a和b,而class A和class B都没有default constructor(因为上面A、B类的constructor带参数了),这样在对象c被创建时不会自动调用a和b的constructor,编译报错。
阅读全文
0 0
- C++类创建初始化的顺序
- java类的初始化和对象的创建顺序
- 11.c++-初始化列表中初始化顺序和它们在类中声明的顺序保持一致
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类初始化的顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- zepplin坑 一则
- Android Studio生成APK自动追加版本号
- 递归生成全排列
- [ElasticSearch]搜索
- c++作业6
- C++类创建初始化的顺序
- 第六次上机作业
- 4. Median of Two Sorted Arrays
- c++实验六-数组合并
- 作业六
- 基于struts1的网页版简单计算器的设计
- 不可变的原始值和可变的对象引用
- Lo4j简单配置
- git上的Bug分支