我有一个带有许多继承派生类的基类。像这样的东西:
class A {
public:
virtual void f(string foo = "bar") {
cout << foo << endl;
}
};
class B: public A {
public:
void f(string foo = "howdy") {
cout << foo << endl;
}
};
class C: public A {
public:
void f(string foo = "something") {
cout << foo << endl;
}
};
为简洁起见,我只继承了两个类。
这是主要的:
A* aArray[] = {
new B,
new C,
};
int main() {
aArray[0]->f();
aArray[0]->f();
return 0;
}
当我运行程序时,我得到的输出是:
bar
bar
就像编译器忽略被覆盖函数的默认参数一样。
这是正常的,还是我做错了什么或我错过了什么?