如何获取由共享指针指向的对象?

62

我有一个问题。我们能否直接获取共享指针所指向的对象?还是应该通过get()调用来获取底层的原始指针,然后访问相应的对象?

2个回答

94

获取指向由 shared_ptr 指向的对象的引用有两种方法。假设您有一个名为 ptrshared_ptr 变量。您可以通过使用 *ptr*ptr.get() 来获取引用。这两者应该是等价的,但第一种方式更受青睐。

原因在于,您实际上是在模拟一个裸指针的解引用操作。表达式 *ptr 表示“获取由 ptr 指向的数据”,而表达式 *ptr.get() 表示“获取由包含在 ptr 中的裸指针指向的数据”。显然,第一种表达更清楚地描述了您的意图。

另一个原因是 shared_ptr::get() 旨在用于实际需要访问裸指针的情况。在您的情况下,您并不需要它,因此不要请求它。跳过整个裸指针的内容,继续在更安全的 shared_ptr 环境中生存。


27

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接