gpt4 book ai didi

c++ - 为什么我们必须在箭头符号( -> )之后再次指定数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:41 25 4
gpt4 key购买 nike

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;
}

已经看到完整的封闭命名空间,可以使用非限定 id 指定 bar

关于c++ - 为什么我们必须在箭头符号( -> )之后再次指定数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com