auto
可以推导出返回类型 那么为什么我们需要尾部箭头符号(->)来推导出返回类型
#include <iostream>
auto add (int i, int j)->int
{
return i+j;
}
int main()
{
int x=10,y=20;
std::cout<<add(x,y);
}
在 C++11 中,函数没有返回类型推导。auto
不是这里要推导的占位符类型。可以说它的意义超载了。
对于函数来说,auto
只是意味着返回类型将被指定为尾随返回类型。您不能省略尾随返回,否则您的程序将格式错误。
此功能已添加到语言中,以允许返回类型规范依赖于函数参数或成员的封闭类。当达到尾随返回类型时,这些被视为“已看到”。
例如,在这个类中:
namespace baz {
struct foo {
enum bar {SOMETHING};
bar func();
};
}
如果我们在 C++03 中实现该成员函数,它必须如下所示:
baz::foo::bar baz::foo::func() {
return SOMETHING;
}
我们必须指定返回类型的完全限定名称。这很快就会变得不可读。但对于尾随返回类型:
auto baz::foo::func() -> bar {
return SOMETHING;
}
完整的封闭命名空间已经可见,并且bar
可以使用不合格的 id 来指定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)