我看到一个成员获得参数所有权问题的两个合理的解决方案:
Foo::Foo(std::unique_ptr<int> parameter)
: member(std::move(parameter))
{
}
Bar::Bar(std::unique_ptr<int> parameter)
{
member.swap(parameter);
}
其中哪一个更惯用,更易于理解,更易于调试,更易于维护等?
我错过了这个问题的其他解决方案吗?
答案 0 :(得分:12)
始终支持初始化列表。此外,它还包括可以移动但不交换的类型,或者可能必须为默认构造执行昂贵操作的类型 - 或者实际上,不能默认构造的类型。