簡體   English   中英

C++ - 為包含字符串的類移動構造函數

[英]C++ - Move constructor for class containing strings

class Foo { int a; int b; int c; std::wstring d; std::vector<char*> e };

假設std::vector有一個大字符串(~512 字節)和~512 字節,它的用例如下:

void Test()
{
    Foo foo;
    DoSomething(std::move(foo)); // DoSomething will stuff it in a long-lived queue
}

基本上我希望 RAII 對象的生命周期發生變化。

這是在我實現移動構造函數和賦值運算符時嗎? 或者只是做std::move(..)就足夠了?

如果沒有移動構造函數和/或移動賦值運算符, std::move是無用的。

但是,您的類的所有成員都是可移動的,並且您沒有任何用戶定義的析構函數、復制構造函數或復制賦值運算符,因此將有一個隱式定義的移動構造函數和移動賦值運算符做正確的事情。

因此,在這種特定情況下,答案是您不需要定義移動構造函數或賦值運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM