【发布时间】:2017-11-01 06:14:47
【问题描述】:
我有以下代码:
struct Base
{
std::vector<int> a;
}
struct Derived : public Base
{
Derived(Base && rhs):
Base( std::forward<Base>(rhs))
{
}
//some more fields
}
//...
Base a;
Derived b(std::move(a));
调用Derived 构造函数会导致调用std::vector 包含在Base 类中的移动构造函数吗?
【问题讨论】:
-
是的,
Base part的Derived object的构造过程将调用 Base 的隐式定义的 move c'tor,这将调用 Base 的所有数据成员的 move 构造函数。 -
你应该在这里使用 std::move 。 std::forward 用于转发传递给模板函数的参数。
标签: c++ c++11 move-constructor