我正在尝试实现接下来的两个功能
Number& DoubleClass::operator+( Number& x);
Number& IntClass::operator+(Number& x);
我不知道该怎么做..(它们的单向性在下面解释):
class IntClass;
class DoubleClass;
class Number {
//return a Number object that's the results of x+this, when x is either
//IntClass or DoubleClass
virtual Number& operator+(Number& x) = 0;
};
class IntClass : public Number {
private:
int my_number;
//return a Number object that's the result of x+this.
//The actual class of the returned object depends on x.
//If x is IntClass, then the result if IntClass.
//If x is DoubleClass, then the results is DoubleClass.
public:
Number& operator+(Number& x);
};
class DoubleClass : public Number {
private:
double my_number;
public:
//return a DoubleClass object that's the result of x+this.
//This should work if x is either IntClass or DoubleClass
Number& operator+( Number& x);
};
最佳答案
你不能。
问题是 operator +
返回了一个新对象,而你不能凭良心返回一个引用——这必然是一个悬空引用或对非托管的引用您必须手动释放的堆内存。
总而言之,这不能使用运算符+
来完成。
关于c++ - C++中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651032/