败犬日报 2024-11-02
1. "pass-by-value and move"
构造函数或给成员赋值的函数,如果参数是 const T &arg
和 T &&arg
,被称为 "pass-by-reference"。
cpp
struct Creature {
std::string m_name;
Creature(const std::string &name) : m_name{name} {}
Creature(std::string &&name) : m_name{name} {}
// 也可以使用完美转发,略
};
如果参数是 T arg
,被称为 "pass-by-value and move"。
cpp
struct Creature {
std::string m_name;
Creature(std::string name) : m_name{std::move(name)} {}
};
"pass-by-value and move" 相比之下会多一次移动,但是写起来更简洁,适用于移动开销小的类型。