Предположим, у меня есть два класса C ++:
class A
{
public:
A() { fn(); }
virtual void fn() { _n = 1; }
int getn() { return _n; }
protected:
int _n;
};
class B : public A
{
public:
B() : A() {}
virtual void fn() { _n = 2; }
};
Если я напишу следующий код:
int main()
{
B b;
int n = b.getn();
}
Можно ожидать, что n
установлено на 2.
Оказывается, n
установлено в 1. Почему?