上篇写到了一点,接下来我们在谈三点。
2.继承带有explicit defaul constructor的Base Class,此时编译器会为我们合成一个default constructor,先依次按声明的次序调用 Base Class的构造函数。如果drivered class 中含有各种constructors , 那么编译器不会为我们合成一个default constructor,而是将代码穿插在每一个constructors中。
3.带有一个virutal Function 的class:
一.class 声明或继承一个virtual Function
不管哪一种情况,由于缺乏user 声明的constructor 所以compiler会为我们合成default construct.
在合成期间,编译器做了以下两件事(含有virtuan Function):
1.virtual Function table 会被compiler生成,内含class的每一个virtual function address.
2.在每一个class object 中都会产生一个指向 virtual function table 的pointer member.
4. class 派生自一个串链,其中有一个或更多的virtual base class.