C++箴言:绝不在构造或析构期调用虚函数

C++箴言:绝不在构造或析构期调用虚函数,第1张

C++箴言:绝不在构造或析构期调用虚函数,第2张

你不应该在构造或者破坏的时候调用虚函数,因为这样的调用不会像你想象的那样起作用,它们做的事情保证让你沮丧。如果你成为了Java或C#程序员,请密切关注这篇文章,因为C++急转弯的地方,那些语言也紧急转弯。

假设您有一个模拟股票处理的类层次结构,例如,买入过程、卖出过程等。这种处理是可验证的,这一点非常重要,因此事务对象将在任何时候被创建,并且在审计日志中记录这个创建是适当的要求。这里有一个看似合理的问题解决方案:

class Transaction {//all
public://transactions
Transaction()的基类;

虚拟void log transaction()const = 0;//生成依赖于类型的
//日志条目
...
};

Transaction::Transaction() //实现
{
//基类ctor
...
log transaction();//作为最终操作,记录此
} //事务

class buy Transaction:public Transaction {
//派生类
public:
virtual void log Transaction()const;//如何记录这种类型的trans-
//操作
...
};

class sell Transaction:public Transaction {
//派生类
public:
virtual void log Transaction()const;//如何记录这种类型的trans-
//操作
...
};

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++箴言:绝不在构造或析构期调用虚函数

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情