读书人

怎么理解这句话.默认构造函数

发布时间: 2013-03-14 10:33:15 作者: rapoo

如何理解这句话..默认构造函数?
如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。


1,第一个条件无法理解,哪位前辈给讲解下啊.
[解决办法]
如果有虚函数,初始化对象的时候就需要初始化vtable指针指向该类的vtable,这样虚函数才能正确调用。
这也是为什么父类的构造函数里没办法调用子类的虚函数。因为在父类构造函数里,子类构造函数还没有被调用,vtable还没指过去,因此子类的虚函数都不可见。

读书人网 >C++

热点推荐