假设我有 3 个类Base:Derived和Chunky。Derived派生自Base,并且Base有一个类型的成员Chunky(Chunky很大,除非必须,否则我不想复制它)。
这里是Base,假设我们不能以任何方式改变它(不,我们不能为它创建一个构造函数):
class Base
{
public:
Chunky monkey;
}
Derived看起来像这样:
class Derived : public Base
{
// option 1
Derived(Chunky const& monkey)
{
this->monkey = monkey;
}
// option 2
Derived(Chunky monkey)
{
// does this do anything useful, or am I wasting my time by calling std::move?
this->monkey = std::move(monkey);
}
}
我更喜欢选项 2,因为意图更清晰,而且我不必创建参考值,但我们仍然有std::move什么时候monkey不能在构造函数初始化程序列表中初始化的好处吗?你将如何解决这个问题(再次假设Base不能改变)?
如果有人想知道,猴子在这种情况下是一个 std::function,而这个讨论并没有真正回答我的问题。