1 构造函数不能为虚函数,原因主要如下
虚函数的调用需要虚函数表指针,而该指针存放在对象的内容空间中。内存空间需要构造函数完成初始化;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数——构造函数了。
2 析构函数可以为虚函数
首先析构函数可以为虚函数,而且当要使用基类指针或引用调用子类时,最好将基类的析构函数声明为虚函数,否则可以存在内存泄露的问题。
1 构造函数不能为虚函数,原因主要如下
虚函数的调用需要虚函数表指针,而该指针存放在对象的内容空间中。内存空间需要构造函数完成初始化;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数——构造函数了。
2 析构函数可以为虚函数