【发布时间】:2012-03-11 04:32:34
【问题描述】:
所以我有一个Base 类:
class Base
{
public:
std::ostream& operator << (std::ostream & out, const Base & base);
}
我已经定义了操作员应该做什么:
ostream& operator << (std::ostream & out, const Base & base)
{
return out << "output";
}
如果我有一个扩展Base 的Derived 类,并且我希望Derived 在调用其插入运算符时执行与Base 相同的操作,那么执行此操作的最佳方法是什么?最好的意思是不重用代码的最佳方法。
【问题讨论】:
-
您是否尝试过
virtual方法,其中仅当Derived的行为与Base不同时才进行覆盖? -
您的运营商声明无效。
-
@AustinMoore 除非涉及私有变量,否则不会。此外,
ostream& operator << (ostream&, const Base&)需要在命名空间范围内定义,即类定义的外部。 -
@AustinMoore 您必须使用前向声明。示例:pastebin.com/4PPf3i3D
标签: c++ inheritance operator-overloading