代入演算子(コピー演算子)

assignment.png

代入演算子の書き方

String& String::operator=(const String& rhs){//right-hand-side
   if(this==&rhs){//ここでエラーチェック
     return *this;
   }
delete[] data;//古いメモリを削除して
data=new char[strlen(rhs.data)+1];//新しいメモリを割り当てる
strcpy(data,rhs.data);
return *this;
}
  1. 引数は(いつものように)constリファレンス渡しにする。
  2. 戻り値はオブジェクトのリファレンスにする1
  3. 戻り値にconstをつけない2
  4. return するのは*thisにすること3

constなメンバが存在する場合、どうやってコピーすればいいんだ???

constなメンバ関数にしてはいけないのだっけ??

color<T>& operator=(const color<T>& _in)const{//constなメンバ関数
            r=_in.r;
            g=_in.g;
            b=_in.b;
            a=_in.a;
            return *this;
        }

にすると、
エラー 153 error C2440: 'return' : 'const miffy::color<T>' から 'miffy::color<T> &' に変換できません。
になる。

constructor copy-constractor

サポートサイト Wikidot.com constructorcopy-constractor