派生类中的C ++运算符重载

时间:2019-07-13 14:04:29

标签: c++

我正在尝试在派生类中重载operator +。我想调用基本运算符+,但返回派生类型。什么是正确的方法?这是我的示例代码。

class B {     // base class
public:

const B operator+( double dbl) const {
  B res;
  res.val = val + dbl;
  return res;
}
virtual void foo() {};         // make class B polymorphic
private:
double val;
}; // end class B



class D : B {     // derived class
public:

const D operator+( double dbl) const {
  // Call the base class "+".  Which is better?
  B bres1 = dynamic_cast< const B &>(*this) + dbl;
  B bres2 = B::operator+( dbl);

  // Cast the result from B to D.  But both fail.
  return dynamic_cast< D>(bres1);      // error: target is not pointer or ref
  return *(dynamic_cast< D*>(&bres1)); // error: dynamic_cast can never succeed
}
}; // end class D

非常感谢!

0 个答案:

没有答案