ページ 11

クラスのコピー禁止について

Posted: 2018年3月08日(木) 10:43
by haruto0909
c++でクラスを作り、そのクラスをコピー禁止にする際の書式についてです。

例えば、CTextureクラスを作ったとします。

コード:


class CTexture
{
	// うんたらかんたら~
	
private:
	// ここ!
}

コメントの「ここ」と書いてあるところにですが、
CTexture(CTexture&);
CTexture& operator=(CTexture&);
と書けばコピー禁止になると思いますが、
CTexture(const CTexture&);
CTexture& operator=(const CTexture&);
というふうに、引数にconstをつけるのとでは何が違うのでしょうか?

Re: クラスのコピー禁止について

Posted: 2018年3月09日(金) 10:49
by tk-xleader
コピー禁止のためコピーコンストラクタとコピー代入演算子をprivateに置く分には、引数にconstをつけるかどうかはどうでもいいです。コンストラクタと代入演算子がそれぞれコピーコンストラクタとコピー代入演算子となるには、const(volatileもですが)の有無は問われないです。明示的にオーバーロードしない限り、constの有無でコピーコンストラクタとコピー代入演算子がオーバーロードされるわけではないです。

以上のことはコピーコンストラクタとコピー代入演算子をdelete定義する場合も変わりません。

Re: クラスのコピー禁止について

Posted: 2018年3月10日(土) 00:29
by haruto0909
tk-xleaderさん

なるほど、違いはないのですね。
ご回答ありがとうございました!