以下是否存在功能差异?是否有理由更喜欢一个而不是另一个?
auto p = new C();
和
auto* p = new C();
答案 0 :(得分:1)
在你给出的片段中没有区别。无论哪种方式,编译器都会推断p
将指向C
。
在更一般的情况下,存在差异;
auto *p = func();
auto p = func();
如果func()
返回不是指针的内容,第一种形式将导致错误消息,但第二种形式不会。这有时是有用的(例如在模板化代码中),其中需要强制执行func()
返回指针而不是(比如)int
的要求。 [虽然,诚然,有更明确和有效的方法来强制执行这样的要求,例如特征]。