Base::operator=
Base
のクラス バージョンを呼び出してoperator=
、オブジェクトの一部である部分をコピーしBase
、派生クラスが残りをコピーします。基本クラスはすでに必要なすべての作業を正しく行っているため、なぜ作業を繰り返すのか、再利用するだけです。それでは、この簡単な例を見てみましょう。
class Base
{
std::string
s1 ;
int
i1 ;
public:
Base& operator =( const Base& b) // method #1
{
// trvial probably not good practice example
s1 = b.s1 ;
i1 = b.i1 ;
return *this ;
}
} ;
class Derived : Base
{
double
d1 ;
public:
Derived& operator =(const Derived& d ) // method #2
{
// trvial probably not good practice example
Base::operator=(d) ;
d1 = d.d1 ;
return *this ;
}
} ;
Derived
には 3 つのメンバー変数があり、2 つは from Base
:s1
でi1
、1 つはそれ自身のd1
です。そのため、whichから継承した 2 つの変数をコピーするというラベルを付けたものBase::operator=
を呼び出します。method #1
Derived
Base
s1
i1
d1
method #2