.get()和 - >之间有区别吗?有智能指针?

时间:2014-08-02 10:08:01

标签: c++ c++11 stl operators smart-pointers

std::shared_ptrstd::unique_ptr的功能.get()operator->完全相同吗?

或与std::vector s .at()operator[]有区别吗?

1 个答案:

答案 0 :(得分:6)

具有相同的行为(在两种情况下operator->()都定义为返回get()),但operator->()具有get()不得返回0的前提条件。

这意味着:

a.get();        // does not cause UB just because holds a null pointer
a.operator->(); // would cause UB if a.get() == 0

其中astd::unique_ptrstd::shared_ptr