C ++调用子函数

时间:2018-06-16 21:31:56

标签: c++ inheritance overrides

如何获取此代码段的输出以打印“Child Class的功能”?

我无法理解为什么写作

<div layout="row" layout-wrap>
   <div flex="25" ng-repeat="val in jsonArray">{{val}}</div>
</div>

导致类似的输出

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;
}

1 个答案:

答案 0 :(得分:2)

对象切片。 obj是一个基类,即使它是从派生类对象中分配的。

要覆盖派生类中的函数,您需要创建disp()函数virtual,然后尝试:

DerivedClass d;
BaseClass& obj = d;

obj.disp();