C++相談室 part61
レス数が950を超えています。1000を超えると書き込みができなくなります。
0975デフォルトの名無しさん
2008/05/25(日) 10:47:10placement newを使う方法ならどのコンパイラでも使える。
#include <new>
T& T::operator =(const T& y)
{
if (this != &y)
{
this->~T();
new(this) T(y);
}
return *this;
}
しかし、コンストラクタの中で例外が起こると非常にまずい
(thisがデストラクタされて状態不定のまま)などの理由で勧められない。
代入演算子をコピーコンストラクタで実装したいという目的に限れば、
Exceptional C++でも紹介されているswapを使う方法がいい。
//その1
T& T::operator =(const T& y)
{
T t(y);
swap(t); //Tのメンバ関数として作っておく
return *this;
}
//その2
T& T::operator =(T y)
{
swap(y);
return *this;
}
レス数が950を超えています。1000を超えると書き込みができなくなります。