存储指针时 auto 和 auto* 的区别
Difference between auto and auto* when storing a pointer
以下在功能上有区别吗?有什么理由偏爱其中之一吗?
auto p = new C();
和
auto* p = new C();
在您提供的代码段中没有区别。无论哪种方式,编译器都会推断 p
将是指向 C
的指针。
在更一般的情况下,是有区别的;
auto *p = func();
auto p = func();
如果 func()
return 不是指针的东西,第一种形式将导致错误消息,但第二种形式不会。这有时很有用(例如在模板代码中),在需要强制要求 func()
return 指针而不是(比如)int
的情况下。 [虽然,不可否认,有更清晰和更强大的方法来执行这种要求,例如特征]。
以下在功能上有区别吗?有什么理由偏爱其中之一吗?
auto p = new C();
和
auto* p = new C();
在您提供的代码段中没有区别。无论哪种方式,编译器都会推断 p
将是指向 C
的指针。
在更一般的情况下,是有区别的;
auto *p = func();
auto p = func();
如果 func()
return 不是指针的东西,第一种形式将导致错误消息,但第二种形式不会。这有时很有用(例如在模板代码中),在需要强制要求 func()
return 指针而不是(比如)int
的情况下。 [虽然,不可否认,有更清晰和更强大的方法来执行这种要求,例如特征]。