継承と仮想メソッドに関する基本的な C++ の質問があります。
このコードを考慮してください:
#include <iostream>
#include <vector>
using namespace std;
class A {
public:
virtual void f() {cout << "A\n";};
};
class B : public A {
public:
void f() {cout << "B\n";};
};
int main() {
A a;
B b;
vector<A> v;
v.push_back(a);
v.push_back(b);
for (int i = 0; i < v.size(); ++i)
v.at(i).f();
}
このコードを実行すると、出力されます
A
A
印刷されない理由がわかりません
A
B
「f」メソッドが仮想として宣言されているためです。プログラムがこのように動作する理由を知りたいです。
前もって感謝します