此问题已在此处有答案:
Does 'auto' type assignments of a pointer in c++11 require '*'?(3个答案)
7年前关闭。
以下各项之间是否存在功能差异?有没有理由选择其中一个?
auto p = new C();
和/或
auto* p = new C();
此问题已在此处有答案:
Does 'auto' type assignments of a pointer in c++11 require '*'?(3个答案)
7年前关闭。
以下各项之间是否存在功能差异?有没有理由选择其中一个?
auto p = new C();
和/或
auto* p = new C();
1条答案
按热度按时间mwecs4sa1#
在你给出的片段中没有任何区别。编译器将推断
p
将是指向C
的指针,无论哪种方式。在更一般的情况下,存在差异。例如;
如果
func()
返回的不是指针,则第一种形式将导致错误消息,但第二种形式不会。这有时是有用的(例如在模板化代码中),其中需要强制要求func()
返回指针而不是(比方说)int
。[虽然,无可否认,有更明确和强大的方法来执行这样的要求,例如特质]。正如John Ilacqua在评论中指出的,使用
auto *
还有其他好处,包括指针的const
限定。例如,const auto * p = func()
指定p
指向const
,或const auto * const p = func()
指定p
指向const
,而p
无法重新分配。如果返回类型func()
上的const
限定符不兼容,则这种限定也会导致诊断。