コードは次のとおりです。
class base{
base(){}
virtual base* copy()const=0;
virtual ~base(){}
};
class derived:public base{
derived(){}
base* copy()const;
~derived(){}
};
base* derived::copy()const{
return new derived(*this);
}
new
関数で演算子を使用する必要がありますcopy()
か、またはコードでnew
演算子を使用する理由は?
this
次のように、ポインターを直接返す必要があります。
const base* derived::copy()const{
return this;// note: this pointer is const.
}