为什么 C++ 没有关键字来定义/声明函数?基本上,该语言中的所有其他设计抽象都有一个(struct
、class
、concept
、module
,... )。
这难道不会成为语言 easier to parse ,以及更加一致?大多数“现代”语言似乎都走了这条路(Rust 中的 fn
,kotlin 中的 fun
,...)。
最佳答案
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 可能很有用,但肯定并不总是需要的)。
因此,最终这些中等 yield 似乎并不能证明引入此类关键字所带来的成本是合理的。
<小时/>额外的一点:
自 C++11 起,语言功能将允许您争论特定的方法:
function square(int a) -> int {
return a * a;
}
这肯定是一个非常可靠的解决方案!但关于 function
关键字的讨论似乎早已平息。当在最新的 C++ 版本创新时还有许多其他可能更重要的优先事项需要讨论时,这是可以理解的。
关于c++ - C++ 中函数的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000446/