【发布时间】:2019-10-21 21:54:19
【问题描述】:
我有抽象类 Number 和 4 个纯虚拟运算符 (+,-,/,*)。我想创建两个派生类Integer 和Real 并在那里覆盖这些运算符。我没有正确理解如何声明运营商。我在网上没有找到任何与我的情况相似的例子。
我的问题是:
在抽象基类Number 中,我的运算符必须返回引用Number& 或指针Number*,因为我不能返回抽象类本身。但是我应该传递什么作为参数? Number& 或 Number* 也是,但我需要在课堂上存储数字,我的基类中是否应该有类似 void* num 的东西?
让我们想象一下,我有
class Number {
...
virtual Number& operator+(const Number&) = 0;
};
我应该如何在派生类Integer中覆盖这个运算符?
【问题讨论】:
-
假设你有那个类层次结构,你能举个例子你会如何使用它吗?不清楚你到底想得到什么。
-
@Evg hm,类似于简单的自定义 int 类。
-
不确定您的设计是否正确...您需要能够以这种方式添加
Integers 和Reals - 但除非您有一些共同点数字表示,您需要了解类型...另一方面,如果您有这样的通用表示,那么为什么不在 Number 基类中使用呢? -
" 我真的不需要 atm 来添加 real+int only real+real, int+int" 那么为什么首先要关心虚拟方法或继承呢?您不需要
Integer和Real从基类继承以启用Integer + Integer和Real + Real
标签: c++ operator-overloading abstract-class derived-class pure-virtual