tit*_*tus 4 c++ polymorphism operator-overloading
多态和运算符重载混合在一起?你不能这样做没有多态性指针,因为它是在解释这个答案,你也可以这样做运营商,超载的指针作为解释在这里.
所以真的没有办法做到这一点,对吧?
就在这里.你没有正确阅读答案.
这是一个简短的演示:
#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)
我并不是说这是个好主意,或者说它很实用.这只是可能的.