构造函数为什么不能声明为虚函数

构造函数不能声明为虚构函数。原因有2 :   

 1、虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。

 

 

 纯虚构函数:   纯虚函数是指不必再基类中定义,但必须在派上类中被覆盖的函数。其函数声明格式为virtual 函数名() = 0; 通常纯虚函数用来定义接口或抽象类

posted @ 2013-11-07 17:38  z折腾  阅读(1011)  评论(0编辑  收藏  举报