セマンティック/ R値/ L値を移動(stakcoverflowからコピー)

クラス 文字列{
     チャー *のデータ。

公共文字列CONST  のchar * P){ 
        size_tのサイズ = STD :: STRLEN(P)+ 1 
        データ = 新しい 文字[サイズ]。
    }
    文字列(){
         削除[]データ。
    } 

    文字列constの こと){ 
        size_tのサイズ = STD :: STRLEN(that.data)+ 1 
        データ = 新しい 文字[サイズ]; 
        std :: memcpyの(データ、that.data、サイズ); 
    } 

    /// セマンティック移動、すなわち、そのデータ渡す右辺値である
    文字列ストリングその&&)    // 文字列を&&列に右辺値参照である
    { 
        データ = that.data。
        that.data = nullptr; 
    } 
}。

 あなたが呼び出したい場合は、可能性があるためつまり&&なぜ一つは、文字列を使用することです:

列(X)

列(X + Y)

文字列(列A)

左の値は、どんなにコピーのより深い一種なので、正しい値との直接交換は、左の値よりも速くなりません場合

おすすめ

転載: www.cnblogs.com/sunchuankai/p/11495088.html