0

次のコードがあります。

template<typename T>
class derClass : public baseClass<column<T>, column<k>>
{
      //prohibit value semantics
      derClass(const derClass&) = delete;
      derClass& operator= (const derClass&) = delete;

   public:
      ...
}

私が理解していないこのコードの多くの場所があります:

  1. これらdeleteはどういう意味ですか?delete変数の宣言が表示されません。
  2. 同じクラスのオブジェクトを引数として取るコンストラクターが必要なのはなぜですか?
  3. この行全体はどういう意味ですか:derClass& operator= (const derClass&) = delete;
4

4 に答える 4

1

値のセマンティクスは、オブジェクトが値のように動作する場合です。別のオブジェクトに割り当てると、2 番目のオブジェクトは同じ値になり、最初に変更すると 2 番目のオブジェクトは同じままになります。もう 1 つのケースは参照セマンティクスです。最初に変更すると、2 番目が変更されます。

同じクラスの参照を取るコンストラクターはコピーコンストラクターであり、オブジェクトをコピーするだけです。2 番目の定義は代入演算子です。それらをdelete- としてマークすると、オブジェクトをコピーして割り当てることができませんでした。

于 2013-08-20T08:03:01.847 に答える