有一个带有一些复制字段的类。
class Foo{
Bar _bar;
//...
};
在移动语义之前,我会说初始化_bar
它的最好方法是传递一个常量引用:
Foo::Foo(const Bar &bar) :
_bar(bar)
{}
但为了让我们的生活变得更加艰难和美好,移动语义出现了。我有一个问题。现在初始化类字段的最佳方法是什么?粗略地说,这一切都归结为:
Foo::Foo(const Bar &bar) :
_bar(bar)
{}
对比
Foo::Foo(Bar bar) :
_bar(std::move(bar))
{}
很明显,在某些情况下,一个构造函数更好,而在其他情况下,另一个构造函数更好。关于这个主题是否有任何“经验法则”或最佳实践?