二元运算符重载和多态

时间:2012-04-06 21:08:26

标签: c++ polymorphism operator-overloading

我正在尝试创建一个允许我在其中一个类中添加整数的运算符,但是我遇到了如下问题。

    struct Base
{
    //Will have value of zero
};

struct Derived : public Base
{
    int value_;
};

int & operator+=(int & num, Base & b);
int & operator+=(int & num, Derived & d);

运营商实施

int & operator+=(int & num, Base & b)
{
    return num;
}

int & operator+=(int & num, Derived & d)
{
    num += d.value_;
    return num;
}

所以我有一个向量,我正在尝试迭代它并将所有值添加到一个整数。但是,即使是Derived类型的也不会改变总和。

如何让运算符重载多态?

1 个答案:

答案 0 :(得分:0)

这是一位很好的博士。 dobbs为您的问题提供3种解决方案的文章http://drdobbs.com/cpp/200001978 其中一个,我在想同样的事情,就是你可以依靠你的操作员进行虚拟成员函数或辅助函数。