我有一个关于继承和虚拟方法的基本 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”方法被声明为虚拟的。我想知道为什么程序会以这种方式运行。
提前致谢