【16】c++11新特性 —>独占智能指针unique_ptr

初始化

std::unique_ptr是一个独占的智能指针,他不允许其他的智能指针共享其内部的指针,可以通过他的构造函数初始化一个独占智能指针对象,但是不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr。

cpp 复制代码
unique_ptr<int> func()
{
	return unique_ptr<int>(new int(520));
}
int main()
{
	//通过构造函数初始化对象
	unique_ptr<int>ptr1(new int(10));
	//move ptr1不在指向之前的地址
	unique_ptr<int>ptr2 = move(ptr1);
	unique_ptr<int>ptr3 = func();
	return 0;
}

reset

使用reset方法可以让unique_ptr解除对原始内存的管理,也可以用来初始化一个独占的智能指针。

cpp 复制代码
int main()
{
	//通过构造函数初始化对象
	unique_ptr<int>ptr1(new int(10));
	//move ptr1不在指向之前的地址
	unique_ptr<int>ptr2 = move(ptr1);

	ptr1.reset(); //解除对原始内存的管理
	ptr2.reset(new int(1)); //重新指定智能指针管理的原始内存
	return 0;
}

原始地址

如果想要获取独占智能指针管理的原始地址,可以调用get()方法,函数原型如下:

cpp 复制代码
int main()
{
	//通过构造函数初始化对象
	unique_ptr<int>ptr1(new int(10));
	//move ptr1不在指向之前的地址
	unique_ptr<int>ptr2 = move(ptr1);

	cout << *ptr2.get() << endl;
	ptr2.reset(new int(1)); //重新指定智能指针管理的原始内存
	cout << *ptr2.get() << endl;
	return 0;
}
相关推荐
启山智软2 分钟前
前沿主流技术栈商城系统(Java JDK21 + Vue3 + Uniapp)
java·开发语言·uni-app
浅念-4 分钟前
分治算法专题|LeetCode高频经典题目详细题解
数据结构·c++·算法·leetcode·职场和发展·排序·分治
H Journey10 分钟前
C++ 性能瓶颈分析与优化
c++·性能优化·gprof·perf·valgrind·瓶颈分析
QH1392923188017 分钟前
Rohde & Schwarz ZNA43矢量网络分析仪的使用方法
开发语言·php
沐知全栈开发21 分钟前
SVG 实例
开发语言
geovindu24 分钟前
go: Iterator Pattern
开发语言·设计模式·golang·迭代器模式
他是龙55127 分钟前
70:Python安全 & SSTI模板注入 & Jinja2引擎 & 利用绕过 & 工具实战
开发语言·python·安全
熬夜敲代码的猫27 分钟前
C++继承:让你从入门到深入
c++·算法·继承
人道领域32 分钟前
【LeetCode刷题日记】239.滑动窗口最大值:单调队列解法(困难)
java·开发语言·算法
果汁华36 分钟前
Claude Agent SDK Python:构建自主 AI 代理的官方引擎
开发语言·人工智能·python