C ++的语法主要来自C,而C不提供function
关键字。相反,它使用某种语法来表示大多数功能:
[return type] [function name]([paramters]) { }
因此,如果function
引入了关键字,我们可以更快地解析并提高可读性。但是,您现在有两种不同的方法来声明某些内容,并且由于向后兼容的必要性,您无法摆脱旧的方法。
但是,让我们假设我们忽略了向后兼容性参数,并假设引入了它:
function int square(int a) { //1
return a * a;
}
//-----------------------------
function square(int a) { //2
return a * a;
}
case的1
行为就像关键字指示符一样,它具有好处(易读性,解析)和缺点(给函数声明撒上不必要的噪音)
case 2
是一种javascript风格的方法,可让编译器确定返回类型(如此auto
处所示)。它可能是最美观的方法,但是C ++是非常静态的类型,因此在不需要它时会增加一层混乱(auto
-ness很有用,但肯定不是总是想要的)。
因此,最终,这些中等收益似乎并不能证明引入此类关键字所带来的成本。
额外的一点:
从C ++ 11开始,语言功能使您可以主张一种垂直的方法:
function square(int a) -> int {
return a * a;
}
这肯定是一个非常可靠的解决方案!但是,关于function
关键字的讨论似乎早已平息。当在最新的C ++版本上进行创新时,还有许多其他(可能更重要)的优先事项要讨论时,这是可以理解的。