std::shared_ptr
和std::unique_ptr
的功能.get()
与operator->
完全相同吗?
或与std::vector
s .at()
和operator[]
有区别吗?
答案 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
其中a
是std::unique_ptr
或std::shared_ptr
。