我有这段代码:
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函数中的旧数组。
答案 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;
}