//我们总是指定函数的返回类型,因为它在语法中.....但是任何人都可以通过指定函数的返回类型来告诉我我们提供了什么基本目标......... .means为什么必须像这样制作语法.....可能我们只能返回值..
您必须在函数声明中指定类型,因为并非所有函数声明都是定义.例如,如果不需要返回类型,请考虑以下声明:
f(int x);
Run Code Online (Sandbox Code Playgroud)
是什么类型的f(42)?从这个声明中无法知道,因此需要指定返回类型.
或者,考虑以下函数的定义(假设C是某个类):
g(bool b) {
if (b) {
return C();
}
return 0.0;
}
Run Code Online (Sandbox Code Playgroud)
返回类型应该g是什么?它可能是double,也可能是C.
语法"必须像这样",因为C++是基于C构建的,它实际上没有类型推断.C++可能是基于其他语言构建的,在这种情况下,这不会"必须像这样",但C++将是一种完全不同的语言.
请注意,C++ 0x添加了一个可以推导出函数返回类型的位置:如果lambda表达式主体由单个return语句组成,则lambda的返回类型被推断为return语句中表达式的类型(如果lambda是任何其他形式,void除非明确指定了返回类型,否则返回类型的推断.所以,以下是相同的:
[]() -> int { return 42; }
[]() { return 42; }
Run Code Online (Sandbox Code Playgroud)
但是Lambda表达式很特殊,因为你不能在没有定义lambda的情况下声明它.
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |