我auto几乎到处都使用c ++ 11 关键字.我不确定在这种情况下我是否正确使用它.请考虑以下简单示例:(http://ideone.com/TxLJlx)
#include <iostream>
const char* f()
{
return "Hello";
}
int main()
{
auto s1 = f();
auto* s2 = f();
std::cout << s1 << std::endl;
std::cout << s2 << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
双方auto并auto*似乎工作,似乎做同样的事情.这个假设是错的吗?
为什么两者都给出相同的结果?
auto在这种情况下哪个是正确的用法?
Rei*_*ica 14
它们都意味着相同 - const char*两种情况都是类型.但是,使用auto *stress(和self-documents)f()返回指针的事实.如果稍后更改该函数以返回其他内容(例如std::string在这种情况下),则会发出错误信号.
使用哪个主要是风格问题.如果代码在很大程度上依赖于f()返回指针,或者您觉得需要使其显而易见,请使用auto*.否则,只需使用auto并完成它.
请注意,返回引用时的情况不同.这些都是通过auto扣除来删除的,因此如果您需要将返回的引用作为参考,则必须使用auto &(或用于auto &&获取通用引用).
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |