存储指针时auto和auto *之间的差异

时间:2016-03-24 23:29:21

标签: c++ c++11 auto

以下是否存在功能差异?是否有理由更喜欢一个而不是另一个?

auto p = new C();

auto* p = new C();

1 个答案:

答案 0 :(得分:1)

在你给出的片段中没有区别。无论哪种方式,编译器都会推断p将指向C

在更一般的情况下,存在差异;

auto *p = func();

auto p = func();

如果func()返回不是指针的内容,第一种形式将导致错误消息,但第二种形式不会。这有时是有用的(例如在模板化代码中),其中需要强制执行func()返回指针而不是(比如)int的要求。 [虽然,诚然,有更明确和有效的方法来强制执行这样的要求,例如特征]。