C++ 中智能指针和类型强转笔记

本文详细介绍了C++中的四种智能指针:auto_ptr、unique_ptr、shared_ptr和weak_ptr,以及它们在内存管理中的作用和注意事项。同时,探讨了四种类型转换:static_cast、const_cast、dynamic_cast和reinterpret_cast的用途和安全性。了解这些概念对于C++程序员来说至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能指针四种: 自,唯,共,弱.

atuo_ptr, unique_ptr, shard_prt, weak_pt.

atuo_ptr: 自动指针, C11中摒弃, C17中删除.

unique_ptr: 独占被引用对象的地址, 不过copy. 可以转移. 有专门的api.

shard_prt: 可以多个指针对象指向同一个内存对象, 对象的引用计数会增加, 引用 为0时销毁对象.

                 问题: 循环引用时, 计数不会减为0, 造成对象不销毁, 内存泄漏. 可以用weak_prt解决.

weak_ptr: 指向内存对象时, 对象引用 计数不会加1.

类型强转四种: 静,常,动,暴.

static_cast, const_cat, dynamic_cast, reinterpret_cast.

static_cast: 同类型间安全转换, 如int, char, long. float.

const_cat: 对const类型去const化, 用的少, 如实参为const, 形参不为const时要这样转一下.

dynamic_cast: 基类指针或引用 , 转为派生类的, 然后用派生类的指针或者引用调用非虚函数.

reinterpret_cast: 暴力转换, 任意类型转换, 按bit copy, 要非常小心使用. 不过C 语言工作者, 我相信经常这样干.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值