6

对于成员拥有参数的问题,我看到了两种合理的解决方案:

Foo::Foo(std::unique_ptr<int> parameter)
: member(std::move(parameter))
{
}

Bar::Bar(std::unique_ptr<int> parameter)
{
    member.swap(parameter);
}

其中哪个更惯用、更易于理解、更易于调试、更易于维护等?

我错过的问题是否有其他解决方案?

4

1 回答 1

12

总是喜欢初始化列表。此外,它还涵盖了可以移动但不能交换的类型,例如,可能必须为默认构造执行昂贵操作的类型,或者实际上根本无法默认构造的类型。

于 2012-07-09T13:50:07.263 回答