*w.get()和*w输出的结果都是一样的,他们的区别是什么呢?

来源:6-17 智能指针unique_ptr

卷王Charles

2022-02-12

看到其他问题中老师已经回复了,w.get()返回的是w中包裹的内容,在实际的项目中,哪种场景下需要使用w.get(),哪种场景又是直接使用w呢?

图片描述

写回答

2回答

quickzhao

2022-02-13

有的时候,你可以希望将智能指针所包裹的对象直接赋值给另一个指针。两个智能指针共同给管理一个对象,这时可以考虑使用get,比如w1 = w.get(); 这样w和w1共同管理一个对象,所以就*w1做的一切,都会反应到w指向的对象上。

0
1
卷王Charles
明白了,谢谢老师
2022-02-13
共1条回复

卷王Charles

提问者

2022-02-13

根据老师的回复重新实验后做个记录吧,确实可以通过.get()获取到指针,如图1,如果直接将w赋值给一个智能指针,则会报错,如图2

//img.mukewang.com/szimg/6208b14009e2ba0819411231.jpg

//img.mukewang.com/szimg/6208b1af0997b05f19510916.jpg

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3962 学习 · 1109 问题

查看课程