内嵌对象构造的顺序

[复制链接]
查看11 | 回复3 | 2011-2-1 10:20:39 | 显示全部楼层 |阅读模式
成员被初始化的顺序,就是定义成员的次序。哪怕是对象,也不过是data member,对象的初始化也就是对象的构造如果你要证据?写个测试程序不就行了么?测试初始化后的值但是,楼主的问题其实并不是系统先构造哪个,而是对于初始化列表没有弄清,摘录一段C++primer 12章 类中的一段话你就明白了:1、构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序2、成员被初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个3、初始化列表中的初始化次序常常无关紧要。 也就是说,系统是按定义顺序初始化的,但是初始化列表不影响初始化顺序...
回复

使用道具 举报

千问 | 2011-2-1 10:20:39 | 显示全部楼层
先构造lei1_1再lei1_2按照对象成员定义的顺序可以在LEI1中的构造函数中加入LEI1(){cout<<"1"<<endl;}LEI2()中加入cout<<"2"<<endl;看看结果...
回复

使用道具 举报

千问 | 2011-2-1 10:20:39 | 显示全部楼层
#includeusing namespace std;class LEI1{public: LEI1(char* name) {cout<<name<<endl; }private: int a;};class LEI2{public: LEI2():lei1_2("2")...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行