Tekkaman

导航

 

何时会生成default constructor?

 1、带有"Default Constructor"的Member Class Object。

  对于Class Object成员,编译器默认会调用此成员的默认构造函数。那么在哪调呢?答案是本对象的默认构造函数。所以编译器会生成Default Constructor。

 2、带有"Default Constructor"的Base Class。

  对于继承的情况,编译器默认会调用此类父类的默认构造函数。同上,在本对象的默认构造函数里调,所以需要生成Default Constructor。

 3、带有"Virtual Function"的Class。

  对于带virtual function的类,编译器会设置相应的v_ptr。同上,在本对象的默认构造函数里调,所以需要生成Default Constructor。

 4、 带有"Virtual Base Class"的Class。

  此情况同3类似。

default constructor会做什么?

 1.调用这个对象的构造函数(只会调用默认构造函数,如果找不到,则会编译错误)
 2.调用基类的构造函数
   3.设置正确的虚函数表指针
   4.设置指向虚基类对象的指针

posted on 2013-05-29 21:18  Tekkaman  阅读(300)  评论(0编辑  收藏  举报