* 在构造和析构期间不要调用virtual函数,因为这类调用从不下降至派生类。
//看下述代码需要明白一个概念:基类构造期间的virtual函数不会下降到派生类层。
//也就是说基类构造期间logTransaction()还不是虚函数。
class Transaction{
public:
Transaction(){
...
fun();
}
virtual void fun() const
{
...
}
};
class BuyTransaction :public Transaction{
public:
virtual void fun() const{
...
}
};
在构造函数中调用的virtual函数。如果我在主函数中建立一个派生类的对象,会发生什么呢?
首先会调用基类的构造函数,然后调用派生类的构造函数(析构顺序相反)。基类的构造函数在初始化数据之后,会调用virtual 函数fun。但是,这个fun并不是派生类的里面的,而是基类自己的,为什么?
因为在派生类调用基类的构造函数期间,这个对象还只是基类!