综合以上的情况,可以总结出,对于一个类不含任何构造函数,而编译器会提供默认的构造函数,有一下3种情形:
1 类本身函数虚成员函数或者继承自虚基类
2 类的基类有构造函数,并且基类构造函数还是显示定义的默认构造函数(非编译器提供),若基类的构造函数带有参数(即非默认构造函数),编译器报错
3 这种情况和上一种相似,类的成员对象有构造函数,并且成员对象的构造函数还是显示定义的默认构造函数(非编译器提供);若成员对象的构造函数带有参数(即非默认构造函数),编译器报错。
以上参考了《VC++深入详解》里面的知识点