Как мне получить выходные данные этого сегмента кода для печати «Функция дочернего класса»?
У меня проблемы с пониманием, почему пишу
BaseClass obj = DerivedClass();
вызывает похожий вывод
#include <iostream>
using namespace std;
class BaseClass {
public:
void disp(){
cout<<"Function of Parent Class";
}
void dispOther(BaseClass& other) {
other.disp();
}
};
class DerivedClass: public BaseClass{
public:
void disp() {
cout<<"Function of Child Class";
}
};
BaseClass getInstance() {
BaseClass obj = DerivedClass();
return obj;
}
int main() {
auto obj = getInstance();
auto obj2 = DerivedClass();
obj2.dispOther(obj);
return 0;
}
выход:
Function of Parent Class
Нарезка объектов. obj
является базовым классом, даже если он присваивается из объекта производного класса.
Чтобы переопределить функции в производном классе, вам нужно сделать disp()
функция virtual
затем попробуйте это:
DerivedClass d;
BaseClass& obj = d;
obj.disp();
Других решений пока нет …