c++ - C++ 中函数的关键字?

标签 c++ function parsing keyword language-design

为什么 C++ 没有关键字来定义/声明函数?基本上,该语言中的所有其他设计抽象都有一个(structclassconceptmodule,... )。

这难道不会成为语言 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/

相关文章:

python - 导入模块/函数的方式有哪些?

c++ - 如何使用 Zstd 压缩 C++ 字符串?

c++ - 如何在opencv C++中找到最大的轮廓

java - 在 Groovy 中声明函数

c++ - Boost.Process - 如何让一个进程运行一个函数?

c++ - Spirit X3解析器启动状态?

c++ - 如何减少事件总线实现中的耦合

c++ - 无法在 C++ 中调用 const 引用参数的方法

java - 如何在 Java 中拆分单词而不是单个字符?

parsing - 是否有任何用于混合(部分结构、部分未修改文本)解析和重写的 Haskell 技术?