наследование — C ++ вызывает дочернюю функцию

Как мне получить выходные данные этого сегмента кода для печати «Функция дочернего класса»?

У меня проблемы с пониманием, почему пишу

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

-1

Решение

Нарезка объектов. obj является базовым классом, даже если он присваивается из объекта производного класса.

Чтобы переопределить функции в производном классе, вам нужно сделать disp() функция virtualзатем попробуйте это:

DerivedClass d;
BaseClass& obj = d;

obj.disp();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]