Arcen's Blog

アクセスカウンタ

zoom RSS [C++0x]rvalue reference

<<   作成日時 : 2011/03/24 00:14   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Visual Studio 2010 SP1が出たので、rvalueによる高速化を狙って調査。

rvalueに名前をつけて、lvalue(rvalue reference)としてバインドする。

A && rvalue_ref = A();


std::moveは引数をrvalueに変更して、ムーブ(破壊的コピー)が行えるようにする。

A a;
A b = std::move(a);


コピーコンストラクタ以外にムーブコンストラクタを作製する。

#include <string>
class A {
public:
std::string data;
A() : data("data"){printf("デフォルト\n");}
A(const A&a) : data(a.data){printf("コピー\n");}
A(A&&a) : data(std::move(a.data)){printf("ムーブ\n");}
A& operator=(const A&a){ if ( this != & a ) data = a.data; printf("代入\n"); return *this; }
A& operator=(A&&a){ data.swap( a.data ); printf("ムーブ代入\n"); return *this; }
};

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
[C++0x]rvalue reference Arcen's Blog/BIGLOBEウェブリブログ
文字サイズ:       閉じる