tip9:绝不在构造和析构函数中使用virtual函数

来源:互联网 发布:化妆品成分分析软件 编辑:程序博客网 时间:2024/05/16 15:16
class Transaction
{
public:
Transaction();
//~Transaction();
virtual void logTranscation() const = 0;
};


Transaction :: Transaction()
{
....
logTranscation();
}


class BuyTransaction:public Transaction
{
public:
BuyTransaction();
~BuyTransaction();
virtual void logTranscation() const;
};


class SellTransaction:public Transaction
{
public:
SellTransaction();
~SellTransaction();
virtual void logTranscation() const;
};


现在执行 BuyTransaction b;
此时无疑会调用 BuyTransaction 的构造函数,但是得先调用base的构造函数,所以此时
会调用 logTranscation()函数,但是由于 logTranscation()函数是虚函数,而此时
 BuyTransaction()函数还没有初始化,所以base的构造函数是不会下降到派生类函数的
 析构函数也是同样的道理。
0 0
原创粉丝点击