[深度探索C++对象模型]trival constructor和non-trival constructor

分清楚user-declared constructor和implict default constructor

首先要知道,如果你没有自定义一个类的构造函数,那么编译器会在暗中声明一个构造器,这个构造器是为了编译器所需要而创造,我们称它为implict default constructor它们实际上并不会真正的产生!!,而不是因为程序需要这个构造器而产生,如果是因为程序需要这个构造器,那么这是程序员的任务了。如果是一个default constructor,那么它就会是一个trival的constructor,但是以下四种情况除外:

第一种:带有default constructor的成员类对象
第二种:带有default constructor的基类
第三种:带有一个virtual function的类
第四种:带有一个virtual base class的类

所以:任何class如果没有定义default constructor(也就是不带参数的那个啦),编译器就会自动帮你合成一个这句话是错的!!!

https://github.com/li-zheng-hao
原文地址:https://www.cnblogs.com/lizhenghao126/p/11053713.html