継承中の付与関数の注意点
4986 ワード
派生クラスの付与関数を作成するときは、ベースクラスのデータ・メンバーに値を再付与することを忘れないでください.
参考:高品質C++Cプログラミングガイド
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
using namespace std;
class Base{
private:
int x,y;
public:
Base& operator =(const Base &other){
x=other.x;
y=other.y;
printf("Base operator
");
return *this;
}
Base(){
x=0;y=0;
printf("base init
");
}
void baseSet(int tx,int ty){
x=tx;
y=ty;
}
};
class Derive:public Base{
private:
int n,m;
public:
Derive& operator =(const Derive &other){
//x=other.x;
//y=other.y;
//
Base::operator =(other);
m=other.m;
n=other.n;
printf("Derive operator
");
return *this;
}
Derive(){
n=1;m=1;
printf("Derive init
");
}
void DeriveSet(int tn,int tm){
n=tn;
m=tm;
}
};
int main(){
Derive a=Derive();
Derive b=Derive();
b.baseSet(9,9);
b.DeriveSet(8,8);
a=b;
}
参考:高品質C++Cプログラミングガイド