3 回答
TA贡献1802条经验 获得超4个赞
函数和运算符之间的实际区别取决于编程语言。在普通 C 中,运算符是语言本身的一部分。不能添加运算符,也不能更改现有运算符的行为。这不是 C++ 的情况,在 C++ 中,运算符被解析为函数。
从完全不同的角度来看,考虑 Haskell,其中任何(二元)函数都可以被视为二元运算符:
如果你不会说 Haskell,但知道点积,这个例子应该仍然相当简单。鉴于:
dotP :: (Double, Double) -> (Double, Double) -> Double dotP (x1, y1) (x2, y2) = x1 * x2 + y1 * y2
两个都
dotP (1,2) (3,4)
和
(1,2) `dotP` (3,4)
会给 11。
为了解决 Go 文档中的引用:Go 开发人员只是强调,在 C++ 中,将 new 视为具有自己语法的关键字,应将 Go 中的 new 视为任何其他函数。
TA贡献1816条经验 获得超4个赞
“运算符和函数有什么区别?” 句法。但实际上,这纯粹是关于语言的约定:在 C++ 中,+
是一个中缀运算符(并且只有运算符可以是中缀),并且func()
将是一个函数。但即使这并不总是正确的:MyClass::operator+()
是一个函数,但它可以,并且通常使用运算符语法调用。
其他语言有不同的规则:在像 Lisp 这样的语言中,没有真正的区别。人们可以区分内置函数和用户定义的函数,但这种区分有点人为,因为您可以轻松扩展 lisp 以添加额外的内置函数。还有一些语言允许对用户定义的函数使用中缀符号。像 Python 这样的语言在它们之间lhs
+ rhs
映射:映射到函数调用lhs.__add__( rhs )
(所以“操作符”实际上只是语法糖)。
我总结一下,一般来说,编程语言没有规则。只是两个不同的词,每种语言都可以随意使用它们,以最好地描述该语言。
TA贡献1831条经验 获得超9个赞
那么一般而言,编程语言中运算符与函数的确切区别是什么?
它是广泛的。在抽象语法树中,运算符是一元、二元或有时是三元节点 - 将表达式与特定优先级结合在一起,例如+
优先级低于*
,而优先级低于new
。
函数是一个更抽象的概念。作为原语,它们是类型化的子程序入口点,根据语言可以用作具有词法范围的右值。
C++ 允许通过将运算符评估动态分配给所述方法来使用方法覆盖(重载)运算符。这是一种语言“特性”——正如这个问题的存在所暗示的那样——主要是混淆了人们并且在 Go 中不可用。
- 3 回答
- 0 关注
- 203 浏览
添加回答
举报