OOP继承:从派生类

时间:2017-11-17 09:16:21

标签: c++ oop

我有这段代码:

class Base{
public:
 int A[3]={1,2,3};
 void out(){
    for (int i=0;i<3;++i) cout << A[i] << " ";
    cout << endl;
 }  
};

class Derived: public Base{
public:
 void modify(){
    A[2] = 5;
}
 };

int main(){
  Base base;
  Derived derived;
  base.out();
  derived.modify();
  base.out();
  return 0;
}

OUTPUT: 1 2 3 
        1 2 3

我要做的是修改A [2]并通过Base类中的函数打印带有更改值的数组。 但问题是我在Derived类中修改它并使用我的Base类中的函数打印数组后,它仍然是Base函数中的旧数组。

1 个答案:

答案 0 :(得分:0)

这是因为base和derived是完全不同的对象副本,因此在一个中进行修改不会反映在另一个上。所以你必须使用derived.out();获取修改后的数组。但如果要通过基类对象进行修改,则取消注释此处的任何一条注释都有效。

int main()
{
  Base base;
  Derived derived;
  base.out();
  derived.modify();
  derived.out();
  //base.A[2]=5;
  //base=derived;
  base.out();
  return 0;
}