摘要:
本条款解决了我的一个疑问,为什么成员初始化顺序和声明的顺序相同,而和初始化列表中的顺序没关系呢? “我们知道,对一个对象的所有成员来说,它们的析构函数被调用的顺序总是和它们在构造函数里被创建的顺序相反。那么,如果允许上面的情况(即,成员按它们在初始化列表上出现的顺序被初始化)发生,编译器就要为每一个对象跟踪其成员初始化的顺序,以保证它们的析构函数以正确的顺序被调用。这会带来昂贵的开销。所以,为... 阅读全文
posted @ 2013-06-06 16:27
helloweworld
阅读(153)
评论(0)
推荐(1)
摘要:
本条款实际上在解决一个疑问,为什么要有成员初始化列表这个东西,直接在构造函数里赋值不行吗? 条款给出了2点理由: 1.有些情况下必须用初始化——特别是const和引用数据成员只能用初始化,不能被赋值。 2.成员初始化列表的效率比赋值的效率高。 看第一种情况: class A{ const int constVal;public:// A() { constVal = 0;} //error ... 阅读全文
posted @ 2013-06-06 16:12
helloweworld
阅读(265)
评论(0)
推荐(0)

浙公网安备 33010602011771号