C ++中的函数语法为:
return_type function_name(parameter1, parameter2, ...)
{
// function body
}
我对“从函数返回数组的引用”有一些疑问:
首先指定返回类型,然后指定函数名称,但要返回数组的引用,它写为:
// for array of size 10
int (&f())[10] {
return global;
}
为什么?
可以写成以下形式:
// return type followed by function name
int&[10] f(){
return global;
}
或类似的东西(没有typedef)?
[使用它时,我无法理解typedef的用法:
typedef int array_t[10]; //
array_t& f() {
return global;
}
如何简化此代码?它看起来像第1点中的代码吗?
- 为什么?
因为Dennis Ritchie将其设计为在C中如此,并且因为C ++设计为与C兼容。
C中当然没有引用,但是引用遵循与指针相同的语法规则,它们是从C继承的。
- 可以写成以下形式:
没有这在C ++中是不正确的。
- 使用它时,我无法理解typedef的用法:
typedef
只是一个别名;类型的其他名称。
如何简化此代码?
3中的代码最简单。就个人而言,我更喜欢using
语法作为类型别名,而不是typedef
:
using array_t = int[10];
另一种选择是使用尾随返回类型,尽管它是否大致上是主观的:
auto f() -> int(&)[10] {