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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
haruto0909

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

#1

投稿記事 by haruto0909 » 2年前

c++でクラスを作り、そのクラスをコピー禁止にする際の書式についてです。

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

コード:


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

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

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

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

#2

投稿記事 by tk-xleader » 2年前

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

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

haruto0909

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

#3

投稿記事 by haruto0909 » 2年前

tk-xleaderさん

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

返信

“C言語何でも質問掲示板” へ戻る