コードは次のとおりです。次のC++コードで 'new'演算子を使用する必要がありますか?
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);
}
それが機能copy()
か、なぜコードがnew
演算子を使用してnew
演算子を使用する必要ですか?いいえ、単に極めてに言えば
const base* derived::copy()const{
return this;// note: this pointer is const.
}
copyという名前のメソッドが返されますか? –
あなたはコピーコンストラクタについて語りましたか? –
いいえ、あなたは 'this'を返すべきではありません。関数名は、それが新しいオブジェクトであることを意味しますが、元のオブジェクトとは独立しています。 – StoryTeller