【发布时间】:2015-08-16 23:30:55
【问题描述】:
我想重载 Operator
Base* a = new A;
(*a) << 10;
我想使用这种语法,因为我的程序的另一部分使用
问题是,Base 是纯虚拟的,如果没有完整、有效的 Base 类,我不知道如何实现这种系统。例如:
class Base
{
public:
virtual void aVirtualFunction() = 0;
virtual Base operator<<( int ) = 0;
};
class A : public Base
{
Base operator<<( int )
{
// Do something
}
};
class B : public Base
{
Base operator<<( int )
{
// Do something
}
};
这会产生错误,因为 Base 是抽象的。
我不能只将重载放在继承的类中,因为我需要从指向基类的指针访问运算符而不强制转换为子类。
我的问题与Overloading << operator with polymorphism 中提出的问题非常相似,只是我的基类本身不是有效对象。
【问题讨论】:
-
如果你在做多态,它必须是指针或引用。不能按价值计算。
-
因为它是一个抽象类,所以不能按值返回。
-
@Pradheep 是的,我知道。我把它作为我尝试过的一个例子,以及似乎是实现它的唯一合理方法(即使它不起作用)。我想要的是一些设置运算符的方法,以便第一个示例可以工作。
标签: c++ inheritance polymorphism operator-overloading