2020.11.23 第13课 C++智能指针

这是一篇关于C++智能指针的教程,涵盖了auto_ptr, unique_ptr, shared_ptr以及weak_ptr的使用和原理。通过学习,读者将深入理解这些智能指针在内存管理中的角色和重要性。" 115109404,9396188,快应用到Android App跳转指南,"['快应用开发', 'Android集成', '应用间跳转', '接口调用', 'schema配置']
摘要由CSDN通过智能技术生成

2020.11.23 第13课 C++智能指针

01_auto_ptr与unique_ptr

--------------------------------
	智能指针  4个模板类   
	1.auto_ptr C++11放弃
	2.unique_ptr
	3.shared_ptr
	4.weak_ptr
--------------------------------
#include <iostream>
#include <string>
using namespace std;
class MM
{
   
public:
	MM(string name):name(name){
   }
	MM(string* name):name(*name){
   }
	~MM()
	{
   
		cout << "MM的析构过程" << endl;
	}
	friend ostream& operator<<(ostream& out, MM object)
	{
   
		out << object.name << endl;
		return out;
	}
protected:
	string name;
};
void print()
{
   
	MM* pMM = new MM("LBW");
	if (1)
		return;
	delete pMM;  //内存泄露
}
int main()
{
   
	//1.C++11放弃的
	auto_ptr<MM> p1(new MM("LBW"));	//指向对象的首地址
	auto_ptr<MM> p2;
	p2 = p1;			//p1不存在
	cout << *p2 << endl;
	//cout<<*p1<<endl;  //错误,p1不再与对象有关系
	//2.unique_ptr:语义更精确,要求更严格
	unique_ptr<string> p3(new string("要求更严格智能指针"));
	unique_ptr<string> p4;
	//p4=p3; 直接报错,提供一个方法:move
	p4 = move(p3);
	cout << "p4:" << *p4 << endl;
	cout << "p3:" << *p3 << endl;
	unique_ptr<string>* p5 = new unique_ptr<string>(new string("new一个智能指针"));
	MM* pM = new MM(new string("pMM"));
	delete p5;
	return 0;
}

02_shared_ptr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值