Cho mình hỏi tại sao code này lại in ra C vậy ạ? Mình nghĩ B và C không virtual thì kết quả phải là B chứ nhỉ?:
class A
{
public:
virtual const char* getName() { return "A"; }
};
class B: public A
{
public:
const char* getName() { return "B"; }
};
class C: public B
{
public:
const char* getName() { return "C"; }
};
class D: public C
{
public:
const char* getName() { return "D"; }
};
int main()
{
C c;
B &rBase = c;
std::cout << rBase.getName() << '\n';
return 0;
}