class A {
virtual void operator()(int a, int b) { cout << a + b << endl; }
};
class B : A {
void operator()(int a, int b) { cout << a - b << endl; }
};
void f(int a, int b, const A &obj) {
obj(a, b);
}
int main() {
int a = 5, b = 3;;
B obj;
f(a, b, obj); // should give 2, but gives 8 (uses A's function even if it's virtual)
}
它不使用 B 类中的 operator(),而是使用 A 类中的一个(即使它被设置为虚拟,所以它应该使用 B 的 op())。知道如何解决吗?
tl; dr - 当我给出从基类继承的特定类的参数(哪种类型是最基本的类)对象时,我想使用特定的运算符,而不是基类。