Posts Tags Categories About
C++智能指针

unique_ptr

unique_ptr独占它所管理的对象, 不允许拷贝和赋值, 并且开销十分的小.

auto num = make_unique<int>(10); // 构造unique_ptr.
auto ptr = num.release();        // 放弃控制权, 返回底层指针.

num.reset(nullptr); // 释放底层对象.
num.reset(ptr);     // 更换底层对象.

我们可以拷贝和赋值一个将要被销毁的unique_ptr, 编译器会执行特殊的拷贝.

unique_ptr<int> increase(unique_ptr<int> ptr) {
	(*ptr)++;
	return ptr;
}

cout << *increase(make_unique<int>(0)) << endl;