いくつかの継承された派生クラスを持つ基本クラスがあります。このようなもの:
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;
}
};
簡潔にするために、2 つのクラスだけを継承しました。
これがメインです:
A* aArray[] = {
new B,
new C,
};
int main() {
aArray[0]->f();
aArray[0]->f();
return 0;
}
プログラムを実行すると、返される出力は次のとおりです。
bar
bar
コンパイラがオーバーライドされた関数のデフォルト引数を無視する場合と同様です。
これは正常ですか、それとも私が間違っていることや欠けていることがありますか?