c++ - 如何让共享指针指向的对象?

标签 c++ shared-ptr shared smart-pointers

我有一个问题。我们可以得到共享指针直接指向的对象吗?还是应该通过get()调用得到底层的RAW指针,然后访问对应的对象?

最佳答案

您有两种选择来检索对 shared_ptr 指向的对象的引用。假设您有一个名为 ptrshared_ptr 变量。您可以使用 *ptr*ptr.get() 获取引用。这两个应该是等价的,但首选第一个。

这样做的原因是您实际上是在尝试模仿原始指针的取消引用操作。表达式 *ptr 读取“Get me the data point to by ptr”,而表达式 *ptr.get() “Get me the包装在 ptr"中的原始指针指向的数据。显然,第一个更清楚地描述了您的意图。

另一个原因是 shared_ptr::get() 旨在用于您实际需要访问原始指针的场景。在你的情况下,你不需要它,所以不要要求它。跳过整个原始指针的事情,继续生活在更安全的 shared_ptr 世界中。

关于c++ - 如何让共享指针指向的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491955/

相关文章:

c++ - 使用位掩码生成排列

c++ - 共享指针无需分配即可工作

c++ - 在 OpenCV 中使用时间进行帧处理和其他任务

c++ - 错误 : no instance of overloaded function "std::make_shared" matches the argument list

c++ - boost::smart_ptr 的内部结构

GWT - 在共享文件夹中放什么?

c - 使用指针访问shm结构

c++ - C linux中服务器和客户端之间的共享内存

c++ - 抛出声明

C++11 编译器 : Closest to the standard and how close?