ストップのC ++コピー

1.コンパイラが自動的に関数を生成します

クラスを定義する場合、コンストラクタを宣言していない場合は、それらが不足しているデストラクタ、コピーコンストラクタとコピー代入演算子は、それのために対応する機能を(のコンパイルされたバージョン)をコンパイラに宣言します。

コピーを防ぐ2.

コピーを中止するには、2つの方法があります。

この方法の一つ

新基準、およびコピーコンストラクタをコピーの下に以下の方法を使用して、代入演算子削除機能(削除機能)のように定義されます。

構造体NOCOPY

{

NOCOPY(); // ...

NOCOPY(定数NOCOPY&)=削除。

NOCOPY&演算子=(CONST NOCOPY&)削除=。

// ...

}

方法2:

コピーコンストラクタとコピー代入演算子は、プライベートと宣言し、次の方法を使用して実装されていません。

クラスNOCOPY

{

NOCOPY(); // ...

プライベート:

NOCOPY(定数NOCOPY&);

NOCOPY&演算子=(CONST NOCOPY&)。

// ...

}

オブジェクトがコピー操作を実行するために、別の対象または割り当てに行くNOCOPYすると機能がプライベートプライベートとして定義されているため、未定義のリンクエラーのリード部材があるでしょう。

メンバ関数や友人機能する場合には実現が存在しないため、リンクエラーが発生しますと、聖歌に入ります。

要約すると、この方法は、通常、コピー操作の完了を防ぐために推奨されます。

 

 

おすすめ

転載: www.cnblogs.com/jiayouya-susu/p/11962146.html