如标题中所述,我想知道给定类方法是否有正当理由/示例,不包括移动构造函数和移动赋值运算符,或者自由函数应将 R 值引用作为输入参数。
最佳答案
保留值时避免不必要的拷贝。我喜欢将此功能称为“接收器功能”。这在定义 setter 时经常发生。
class A
{
private:
std::string _s;
public:
void setS(const std::string& s) { _s = s; }
void setS(std::string&& s) { _s = std::move(s); }
};
int main()
{
A a;
std::string s{"some long string ......."};
a.setS(s); // copies and retains `s`
a.setS(std::move(s)); // moves and retains `s`
}
关于c++ - 方法应该将 R 值引用作为输入有任何正当理由吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937506/