Я занимаюсь некоторым упражнением на своем понимании. при компиляции ниже кода я вызываю Derived :: disp() и который, в свою очередь, вызывает не виртуальную функцию «Печать».Поведение виртуальной функции C++
Мой вопрос: почему версия производного класса «Печать» вызывается вместо базовой версии печати, даже «Печать» не является виртуальной.
class Base
{
public:
void print(){
cout<<"Base::Print()\n";
}
virtual void disp(){
cout<<"Base::Disp()\n";
}
};
class Derived: public Base
{
public:
void print(){
cout<<"Derived::Print()\n";
}
void disp(){
cout<<"Derived::Disp()\n";
print();
}
};
void main()
{
Base *pB = new Derived();
pB->disp();
}
выход:
Derived :: Disp()
Derived :: Print()
Должно ли это быть 'int main' –