は私がその後、私は私のクラスを変更、機能copy-swap idom:クラスメンバーを変更するとどうなりますか?
void MyClass::swap(MyClass& other)
{
std::swap(a,other.a);
std::swap(b,other.b);
}
た場合を作成し、メンバーa
を削除するコピー・スワップ・イディオムを使用するために、クラス
class MyClass
{
public :
int a;
int b;
}
に持って、その後、コンパイラは、意志swap
関数で不平を言っても問題ありません。
もし私がを追加すると、新しいメンバーが追加された場合、私のswap
の機能はもう正しくありません。スワップ機能に新しいメンバーを追加することを忘れないために私は何ができますか?
プログラマーの人生へようこそ。 C++はこの状態を検出する方法がありません。あなたができる最善の方法は、クラスを変更した人のためにドキュメンテーション(コメント)を追加することです。 –
一般に、 'std :: swap'が非効率である場合には、独自の' swap'を書く必要があります。 –