たとえば、クラスを宣言したいが、クライアントがコピーコンストラクタ(またはコピー代入演算子)を使用できないようにしたいコンストラクタをprivateと= deleteの間で宣言するのはどちらですか?
次の2つのどちらもコピーコンストラクタを使用できません。
class Track
{
public:
Track(){};
~Track(){};
private:
Track(const Track&){};
};
class Track
{
public:
Track(){};
~Track(){};
Track(const Track&)=delete;
};
これらの方法のうちの1つは、他のものよりも「正しい」か、それとも同等であるか?副作用はありますか?それは単に削除しながら
//Does not compile with both the above ways
int main()
{
Track l;
Track p(l);
}
これは 'Track(const Track&)= delete;をコンパイルしますか? ' –
@EdHealはい、そうです。 g ++ 4.7 –
以前にこのような 'delete'の使用は見られませんでした。言語拡張?もしそうであれば、最初のものが間違いなくもっと正確である – kotlomoy