所以我有一个基类有一个私有成员和一个派生类也有一些成员,基类定义了一个运算符=,这是我的问题:
这是正确的方法还是有更好的方法?我是否在此过程中进行任何切片?
class A
{
private:
int* Arr;
public:
A(){
Arr=new int[10];
for(int i=0;i<10;i++){
Arr[i]=2*i;
}
}
const A& operator=(const A& a){
delete []Arr;
Arr=new int[10];
for(int i=0;i<10;i++){
Arr[i]=a.Arr[i];
}
return *this;
}
};
class B: public A
{
private:
int * Arr2;
public:
B(){
Arr2=new int[10];
for(int i=0;i<10;i++){
Arr2[i]=3*i;
}
}
const B& operator=(const B& b){
A::operator=(b);
delete []Arr2;
Arr2=new int[10];
for(int i=0;i<10;i++){
Arr2[i]=b.Arr2[i];
}
return *this;
}
};
我知道这不是一个完美的代码,但我只是为这个问题写了一个简单的代码。