【发布时间】:2014-07-13 23:35:17
【问题描述】:
我正在尝试使用 unique_ptr 并编写了一些简单的代码来检查它如何与移动语义一起使用。
#include <iostream>
#include <vector>
using namespace std;
class X
{
public:
X(){}
~X() { cout << "Destructor X" << endl; }
void Print() { cout << "X" << endl; }
};
int main()
{
unique_ptr<X> ptr(new X());
ptr->Print();
vector<unique_ptr<X>> v;
v.push_back(move(ptr));
ptr->Print();
v.front()->Print();
return 0;
}
输出如下:
X
X
X
Destructor X
我的期望是原始的 unique_ptr ptr 在 push_back 之后会失效。但是 Print() 方法调用得很好。这种行为的解释是什么?
【问题讨论】:
标签: c++ c++11 move-semantics unique-ptr