std::shared_ptr
和std::unique_ptr
的函数.get()
和operator->
完全相同吗?
还是与std::vector
、.at()
和operator[]
有区别?
具有相同的行为(在两种情况下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