Интересно, почему вывод этой C++-программы X: f1? Есть ли вызов объекта y, логично ли вызывать Y f1()? Разве не должно быть наследства? Я запутался ...Почему программа записывает выходные данные следующим образом?
class X {
public:
void f1() { cout<<"X:f1"<<endl;}
};
class Y : public X {
public:
void f1() { cout<<"Y:f1"<<endl;}
};
Y* y = new Y();
void f(X* x) { x -> f1(); }
int main() { f (y);
system("pause");
return 1;
}
И как изменить тело функции и аргументов он принимает, чтобы получить Y F(): f1 на выходе?
Объявление функции 'f1()' как 'virtual' – CoryKramer
Если вы используете язык Java, Python и т. Д., Где все методы экземпляра являются виртуальными, тогда вы должны прочитать о них. – mostruash