C++中点和箭头有什么区别

本文介绍了C++中的智能指针,特别是unique_ptr,它自动管理内存以防止内存泄漏。unique_ptr具有独占所有权,不可复制且支持移动语义。C++11引入的shared_ptr和weak_ptr也一同讨论。
摘要由CSDN通过智能技术生成

C++中点和箭头有什么区别 C++中的智能指针;

image-20231009134231669

总结: 箭头(->):左边必须为指针; 点号(.):左边必须为实体。 C++的智能指针是一种特殊的指针类型,它能够自动管理内存资源,避免常见的内存泄漏和多次释放等问题。 C++11引入了三种主要的智能指针:unique_ptr、shared_ptr和weak_ptr。

a->b最初是(*a).b的简写符号。因此当a是指针时,才使用a->b

a.b仅在b是对象(或对对象的引用)a的成员时使用。因此,对于a.ba始终是一个类的实际对象(或对对象的引用)

箭头(->):左边必须为指针;

点号(.):左边必须为实体。

C++的智能指针unique_ptr、shared_ptr和weak_ptr-腾讯云开发者社区-腾讯云 (tencent.com)

C++的智能指针是一种特殊的指针类型,它能够自动管理内存资源,避免常见的内存泄漏和多次释放等问题。C++11引入了三种主要的智能指针:unique_ptr、shared_ptr和weak_ptr。

在C++中,unique_ptr是一个智能指针(smart pointer)类模板,用于管理动态分配的内存资源,它提供了自动释放内存的功能。与原始指针相比,unique_ptr有更高的安全性和易用性。

独占所有权:每个unique_ptr实例拥有对其所指向对象的唯一所有权。这意味着在任何时候只有一个unique_ptr可以指向一个特定的对象。

自动释放内存:当unique_ptr超出作用域或被重新赋值时,它所管理的内存会自动释放。这样就避免了内存泄漏的问题。

指针语义:unique_ptr的使用方式与原始指针相似,可以通过指针操作符(->)和解引用操作符(*)来访问所指向对象的成员。

不可拷贝:unique_ptr是不可拷贝的,即不能进行复制构造和赋值操作。这是为了确保独占所有权的特性,防止多个指针同时管理同一个对象的内存。

支持移动语义:unique_ptr支持移动构造和移动赋值操作,可以将所有权转移给新的unique_ptr,而无需进行内存拷贝。

可自定义删除器:unique_ptr可以通过模板参数来指定一个删除器(deleter)函数对象,用于在释放内存时执行额外的清理操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值