コピーコンストラクタ
コンストラクタなので、戻り値はなし。
引数はconst参照(引数を非constの参照にした場合、コンパイルエラーになった気がする)。
|
+
|
example... |
class Hoge
{
public:
Hoge(const Hoge& obj); // 戻り値なしで引数はconst参照.
};
// コピーコンストラクタ
Hoge::Hoge(const Hoge& obj)
{
xxxx;
}
|
代入演算子のオーバーロード
戻り値はvoidでも良いが、void型の場合多重代入が使えなくなる( x = y = z = 0 のような書き方)。多重代入を有効にするため、戻り値は自分自身とする。
戻り値と引数を値渡し・値返しにすると、デストラクタによるデータ破壊の恐れがあるため、引数と戻り値は参照にする。
|
+
|
example... |
class Hoge
{
public:
Hoge& operator=(const Hoge& rhs); // 引数と戻り値は参照型.
};
// 代入演算子
Hoge& Hoge::operator=(const Hoge& rhs)
{
xxxx;
return *this;
}
|
2項演算子のオーバーロード
基本的には代入演算子の場合と同様、多重演算のために自クラスを戻り値とする。ただし、オペランド自体を変更してしまわないように、メソッド内で一時オブジェクトを作成し、そのオブジェクトを返す。
|
+
|
example... |
class Hoge
{
public:
Hoge operator+(const Hoge& rhs); // 値戻し.
}
// 加算演算子
Hoge Hoge::operator+(const Hoge& rhs)
{
Hoge result; // 一時オブジェクトを作成する.
xxxx;
return result;
}
|
コメント
最終更新:2011年09月19日 22:28