c++ - C++中的多态性

标签 c++ polymorphism

我正在尝试实现接下来的两个功能

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/

相关文章:

c++ - 不同形式的初始化

c++ - Visual Studio .natvis 文件 - 矩阵

c++ - 有什么方法可以根据类模板类型初始化此变量?

C++ 如何在没有隐式转换的情况下模拟函数?

C++ 使用多态性复制指针 vector

c++ - 需要帮助在基本 C++ 攻击游戏中实现健康

c++ - 如何避免科学记数法而显示完整数字?

mysql - Laravel 的回滚事务支持多态关系吗?

java - ArrayList 中的类型不匹配与多态性

haskell - 读取并表示指定要使用的数据类型的输入