在SO中讀取答案,他通過了vector
與move
。我認爲正確的方法是通過簡單而不使用move
:傳遞可移動的對象
class B
{
std::vector<T> data;
public:
B(std::vector<T> p) : data(std::move(p)) {}
^^^^^^^^^^^^
?
};
第二種方式是:
class B
{
std::vector<T> data;
public:
B(std::vector<T> p) : data(p) {}
};
哪一個是正確的?
第二個讓兩個副本 – billz
如果你需要複製語義,使用拷貝語義。如果您需要移動語義,請使用移動語義。沒有更正確的解決方案。 – IInspectable
你需要移動,因爲p是左值 – billz