一、构造函数
1.构造函数任何时候都不可以声明为虚函数,原因如下:1)虚函数的调用军需通过虚函数表vtable来调用,虚函数表是存储在内存空间的,在调用构造函数前,对象还未被实力化,也就没有该对象的内存空间,也无法找到虚函数表;2)虚函数表实在对象构造之后才建立的,所以构造函数不可能是函数。
2.不能在构造函数内调用虚函数,原因如下:假设有个class继承体系,如下代码,在该base class 的构造函数中调用虚函数,
class A{
public:
A();
virtual void print() const = 0;
.......
};
A::A(){
.......
print();
}
class B : public A{
public:
B();
virtual void print()