Effective C++补充

本文探讨了在C++中使用智能指针如shared_ptr来替代原始指针的方法,强调了资源管理的重要性,并介绍了vector和string等容器在动态数组管理方面的优势。此外,还讨论了pimpl手法以及swap函数的设计。

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

如果函数返回指针,则要小心了,最好要将其变为智能指针比如 int* ->shared_ptr<int>,并且在函数内部还可以改智能指针的删除器。即当引用计数为0时的举动,能够为函数或函数对象 。比如shared_ptr<int> ptr(int* a,f) //f 为删除器。

返回值谨慎用by-reference 参数传递尽量用by reference

能够用non-member函数实现尽量用,因为封装性。

当然一个类的non-member函数可以是另一个类的member函数。

类中转换函数要看实际情况。

不要手动释放资源。

auto_ptr和shared_ptr都有get函数 得到原始指针

例: auto_ptr<int>ptr; ptr.get() 返回一个int*

vector 和string动态分配数组。避免用指针。。

pimpl手法是定义成员函数swap中利用std::swap交换指针,再到类的namespace中定义一个swap函数中间调用swap成员函数,如果有可能,尽量再std中swap特化。

当调用swap时,第一反应在global或T的空间中找,然后std特化,然后default swap。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值