以下の内容はhttps://toburau.hatenablog.jp/entry/20090726/1248628819より取得しました。


すべてコピーするように

Effective C++ 第2章12項
コピーコンストラクタやコピー代入演算子ではオブジェクト全体をコピーするようにして、コピーし忘れたデータが無いようにしなくてはならない。
たとえば、途中からメンバ変数を追加した場合は、コピーコンストラクタやコピー代入演算子のほうにもそのメンバ変数をコピーする処理を追加するのを忘れないように。
また、継承したクラスの場合は継承元のコピーも忘れないように。

class Test : public Base {
private:
    Data m_Data;
public:
    Test(const Test& rhs);
    Test& operator=(const Test& rhs);
};

Test::Test(const Test& rhs)
    : Base(rhs), // 基底クラスのコピーコンストラクタの呼び出し
      m_Data(rhs.m_Data)
{
}

Test& Test::operator=(const Test& rhs)
{
    Base::operator=(rhs);  // 基底クラスのコピー代入演算子の呼び出し
    m_Data = rhs.m_Data;
    return *this;
}

コピーコンストラクタとコピー代入演算子は似たような処理だからと、どちらか一方から別の方を呼び出すということはしてはならない。共通部分を取りだして別の関数とし、それをそれぞれの関数から呼び出すようにする。




以上の内容はhttps://toburau.hatenablog.jp/entry/20090726/1248628819より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14