为什么我们必须在箭头符号(->)之后再次指定数据类型
Why we have to specify data type again after the arrow symbol ( -> )
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中添加。
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 在类定义之后定义一个私有方法
- 在循环C++中指定字符串之后,不会打印该字符串
- C++宏忽略之后的内容
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- EASTL矢量<向量<int>>连续的
- strncpy之后的char数组的错误行为
- 计算十进制 c++ 之后的数字
- "x += x--"之后的 x 是什么?
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- execlp() 在 fork() 之后无法正常工作
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 如何在MISRA C++之后实施CRTP
- 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- C++ 如果在 if 为 true 之后运行,为什么还会这样做
- 在 fork() 之后,我在我的程序中不断得到相同的 pid
- OpenSSL C API:如何在程序exec()之后恢复TLS连接?
- 了解在返回值之前和之后使用 EAX 的函数调用