C++之智能指针

我们前面说new delete这些时,new在堆上分配内存,需要delete来删除内存,释放内存,因为堆不会自动的释放内存,而智能指针实现这一自动化的一种方式,这个就是智能指针,当你调用new时,不需要调用delete。他的本质是一个原始指针的包装,当你创建一个智能指针它会调用new并为你分配内存,然后基于你使用的智能指针,这些内存会在某一时刻自动释放,接下来我们看一个例子:

unique_ptr 作用域指针,也就是超出作用域时,它会被销毁,然后调用delete

#include <iostream>
#include <string>
#include <memory>

class Entity
{
public:
	Entity()
	{
		std::cout << "Created Entity" << std::endl;

	}
	~Entity()
	{
		std::cout << "Destroyed Entity" << std::endl;
	}

	void Print() {}
};

int main()
{
	//一个作用域
	{
		
		//std::unique_ptr<Entity> entity (new Entity()); //不能用 = new Entity 因为unique是需要显示的调用构造函数

		std::unique_ptr<Entity> entity = std::make_unique<Entity>();//不会得到一个空指针,更安全
		entity->Print(); 
        //std::unique_ptr<Entity> e0 = entity;//会报错&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值