【发布时间】:2016-08-01 12:55:27
【问题描述】:
抱歉,如果这是重复的.. 希望不是。我搜索了一长串问题,但似乎都没有真正解释清楚。
这里是:在下面
int main(int,char**){
auto a = make_unique<std::string>("Hello World");
// do stuff with either &*a or a.get()
return 0;
}
&*a 和 a.get() 之间有什么区别吗?我知道它们都返回原始指针值(除非operator& 被重载),但是选择一个比另一个有运行时优势吗?
【问题讨论】:
-
如果原始指针为 nullptr,
&*a是未定义的行为。 -
如果
a是nullptr,&*a不会简单地为 0? -
首选
get,这就是它的用途,更清楚地传达意图,并且更易于阅读
标签: c++ pointers c++11 c++14 smart-pointers