我正在尝试通过派生类 move ctor 显式调用基类 move ctor,但是,令人惊讶!,这实际上调用了基类复制ctor而不是基类移动ctor。
我在std::move()
对象上使用函数来确保正在调用派生的移动 ctor!
编码:
class Base
{
public:
Base(const Base& rhs){ cout << "base copy ctor" << endl; }
Base(Base&& rhs){ cout << "base move ctor" << endl; }
};
class Derived : public Base
{
public:
Derived(Derived&& rhs) : Base(rhs) { cout << "derived move ctor"; }
Derived(const Derived& rhs) : Base(rhs) { cout << "derived copy ctor" << endl; }
};
int main()
{
Derived a;
Derived y = std::move(a); // invoke move ctor
cin.ignore();
return 0;
}
节目输出:
基础复制因子
派生移动子
如您所见,基类 move ctor 被遗忘了,那么我该如何称呼它呢?