以下代码是从Stack Overflow上看到的,对于C++ virtual的特性挺有参考意义的,于是记录下来:
class A{
public:
void f(){
std::cout << "A" << std::endl;
}
};
class B : public A{
public:
virtual void f(){
std::cout << "B" << std::endl;
}
};
class C : public B{
public:
void f(){
std::cout << "C" << std::endl;
}
};
int main()
{
C c;
A& aref = c;
aref.f();
B& bref = c;
bref.f();
return 0;
}
运行结果是什么?