ob2.display()
получит доступ к производному члену класса.
Вызов функции-члена всегда оценивается на this
, this->display()
на this
в случае, если указатель на объект вашего базового класса и, следовательно, любая ссылка на b
внутри функции display()
оценивается как this->b
, что b
Базового класса.
Это потому, что display()
Базового класса не знает, является ли какой-либо другой класс производным от него. Базовый класс всегда не зависит от производного класса. Чтобы решить проблему, следует использовать шаблон display()
в классе Derived, который затем вызывает метод dsiplay()
базового класса.
void B::display()
{
//cout << a <<"\n";
cout << b <<"\n";
A::display();
}