欢迎查看系列博客:
《深度探索C++对象模型》(一)对象模型、存储形式;默认构造函数一定会构造么
《深度探索C++对象模型》(二)C++,new,delete,构造/析构,临时对象
《深度探索C++对象模型》(三)构造函数、拷贝构造和初始化列表(本篇)
--------------------------------------------------------------------------------------------------------------
看了这一章后发现:原来最难搞懂的是拷贝构造函数。
2.1默认构造函数.
C++标准是这么说的:对于class X,如果没有任何user-decleared-constructor,那么会有一个default constructor被暗中(implicitly)声明出来。。。。一个被暗中声明出来的default constructor将是一个trival(无用的) constructor。
如果class X的成员属性带有构造函数,那么无论如何class x需要合成一个default constructor了。被合成的default constructor是为了满足编译器的需要,而不是程序。
下面的代码演示了编译器对构造函数的扩张:
class Dopey {public :Dopey(); }
class Sneezy { public: Sneezy(int); Sneezy();}
class Bashful{public: Bashful();}
//以及一个class Snow_White
class Snow_white {
public:
Dopey dopey;
Sneezy sneezy;
Bashful bashful;
private:
int mumble;
}
/*