避免构造/析构函数调用虚函数

不要在类的构造或者析构函数中调用虚函数,因为这种调用不会如你所愿,即使成功一点,最后还会使你沮丧不已。如果你以前是一个Java或者C#程序员,请密切注意本节的内容-这正是C++与其它语言的大区别之一。

  假设你有一个为股票交易建模的类层次结构,例如买单,卖单,等等。为该类交易建立审计系统是非常重要的,这样的话,每当创建一个交易对象,在审计登录项上就生成一个适当的入口项。这看上去不失为一种解决该问题的合理方法:

  class Transaction {// 所有交易的基类

  public:

   Transaction();

   virtual void logTransaction() const = 0;//建立依赖于具体交易类型的登录项

   ...

  };

  Transaction::Transaction() //实现基类的构造函数

  {

   ...

   logTransaction(); //最后,登录该交易

  }

  class BuyTransaction: public Transaction {

  // 派生类

  public:

   virtual void logTransaction() const; //怎样实现这种类型交易的登录?

   ...

  };

  class SellTransaction: public Transaction {

  //派生类

  public:

   virtual void logTransaction() const; //怎样实现这种类型交易的登录?


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部