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

Why we have to specify data type again after the arrow symbol ( -> )

本文关键字:之后 gt 数据类型 我们 符号 为什么      更新时间:2023-10-16

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

no,在C 11中,使用auto作为函数的返回类型不会推断其类型,您仍然必须明确指定要返回的类型。auto返回类型的类型扣除仅在C 14中添加。