Tra*_*cer 4 c++ unique-ptr c++11
我理解这unique_ptr是某个对象的单个所有者,当它超出范围时,它会释放该对象.我不明白的是以下情况:
unique_ptr<int> p(new int(1));
p = unique_ptr<int>(new int(2));
Run Code Online (Sandbox Code Playgroud)
第一个对象new int(1)如果p被重定向到另一个内存位置会发生什么new int(2)(因为它p只能拥有其中一个)?
unique_ptr当它unique_ptr被摧毁或重新安置时,它会破坏它所拥有的物体.例如:
#include <iostream>
#include <memory>
using namespace std;
struct T {
T(int x) : x(x) {
cout << "T(" << x << ")\n";
}
~T() {
cout << "~T(" << x << ")\n";
}
int x;
};
int main() {
unique_ptr<T> p(new T(1));
p = unique_ptr<T>(new T(2));
}
Run Code Online (Sandbox Code Playgroud)
这将打印:
T(1) 何时创建第一个对象.T(2) 何时创建第二个对象.~T(1)当第一个对象被赋值运算符释放时p.~T(2)当第二个对象被析构函数释放时p.