当用户未定义一个默认的构造函数,编译器并不是在任何时候都给自动给我们定义一个默认的构造函数,它只会在编译器需要的时候才会生成,并且只有class类型的变量会被初始化,其他的诸如内置类型变量或者指针都不会被初始化,这些变量的初始化工作是程序员的责任。
同样,一个类的默认复制构造函数也不是什么时候都会由编译器自动生成,它需要满足以下几种情况:
- 当class内含有一个member object,而这个member object的class声明有一个copy construct时(不论是合成的,还是自己写的);
- 当class继承自一个base class,而这个base class存在一个copy construt的时候;
- 当class声明了一个或多个虚函数(virtual function)的时候;
- 当class派生自一个继承串链,其中有一个或者多个虚基类(virtual base class)的时候。
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【C++中构造函数何时才会构建】(https://www.iteblog.com/archives/202.html)