コピー(一時オブジェクト)を作成せず、ポインタの移動しようというもの 移動されたオブジェクトは破壊される(関数の戻り値等の右辺値は破壊しても全く問題ないでしょ) 一時オブジェクトを作らないので、より高速で無駄のないプログラミングができるようになる struct string { // copy semantics string(const string& s) : data_(new char[s.size_]), size_(s.size_) { memcpy(data_, s.data_, size_); } string& operator=(const string& s) { if (this != &s) { if (size_ < s.size_) // get sufficient data buffer size_ = s.size_; memcpy(data_, s.d