C++如何正确使用智能指针?看完这4个点你就明白了( 三 )
但是 C++比较自由 , 似乎我们不需要明白对象的所有权 , 写的代码也能正常运行 。 但是明白了对象所有权 , 我们才可以正确管理好对象生命周期和内存问题 。
C++引入了智能指针 , 也是为了更好的描述对象所有权 , 简化内存管理 , 从而大大减少我们 C++内存管理方面的犯错机会 。
unique_ptr:专属所有权
我们大多数场景下用到的应该都是 unique_ptr 。 unique_ptr 代表的是专属所有权 , 即由 unique_ptr 管理的内存 , 只能被一个对象持有 。 所以 , unique_ptr 不支持复制和赋值 , 如下:
auto w = std::make_unique<Widget>();
auto w2 = w; // 编译错误
如果想要把 w 复制给 w2 是不可以的 。 因为复制从语义上来说 , 两个对象将共享同一块内存 。
因此 , unique_ptr 只支持移动 即如下:
推荐阅读
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- |冰雪传奇:平民玩家四转后如何打金
- 穿越火线|CF:传说武器再度上新,那王者、炫金该如何发展?
- 打野|打野已经被削到几乎不能再削了,到底如何平衡打野位置?
- 电子竞技|新华社对话明凯、阿布,探讨电竞选手是如何炼成的?宁王无辜躺枪