c ++运算符重载和多态

tit*_*tus 4 c++ polymorphism operator-overloading

多态和运算符重载混合在一起?你不能这样做没有多态性指针,因为它是在解释这个答案,你也可以这样做运营商,超载的指针作为解释在这里.
所以真的没有办法做到这一点,对吧?

Let*_*_Be 7

就在这里.你没有正确阅读答案.

这是一个简短的演示:

#include <iostream>
using namespace std;

struct X
{
    int value;
    virtual void operator += (int x)
    {
        value += x;
    }
};

struct Y : X
{
    virtual void operator += (int x)
    {
        value *= x;
    }
};

void do_stuff(X& x)
{
    x += 10;
    cout << "Final value " << x.value << endl;
}

int main()
{
    X x;
    x.value = 10;
    Y y;
    y.value = 10;
    do_stuff(x);
    do_stuff(y);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我并不是说这是个好主意,或者说它很实用.这只是可能的.