<C++> У меня есть вопрос о виртуальных функциях.
#include <iostream> #include <cstring> #include <cstdlib> using namespace std; class Fir { public: virtual void mfunc() { cout << "First func" << endl; } }; class Sec : public Fir { public: virtual void mfunc() { cout << "Second func" << endl; } }; class Thi : public Sec { public: virtual void mfunc() { cout << "Third func" << endl; } }; int main() { Thi * tptr = new Thi(); Sec * sptr = tptr; Fir * fptr = sptr; fptr->mfunc(); sptr->mfunc(); tptr->mfunc(); delete tptr; return 0; }
Что я уже пробовал:
Когда я выполняю приведенный выше код, "третья функция" отображается три раза. Мне интересно, почему результатом " fptr->mfunc()" является "третий func" вместо "второго func", хотя он указывает на объект Sec.