<分区>
编译器如何知道哪个功能与哪个运算符关联?
<分区>
编译器如何知道哪个功能与哪个运算符关联?
最佳答案
这是一个有点开放性的问题。进一步询问,您是在要求我们写一本书。多本书,事实上:
所以,一个简短但可能有点不尽如人意的答案:
运算符在 C 中有固定的含义。C ISO/IEC 标准在某种程度上指定了该含义。该标准没有指定 1+1=2 等。那是您在高中和之前在较低级别的代数类(class)中学到的知识。我们认为理所当然的东西背后的理论是您在现代代数课上学到的东西(通常由数学学生在学习了多个微积分课后学习)。
运算符在 C++ 中具有更灵活的含义。运算符可以在 C++ 中重载。没有这种重载,C++ 中运算符的含义与 C 中的几乎相同。但是,C++ 使程序员能够定义 foo+bar
在 foo< 的情况下的含义
和 bar
是一些用户定义类型的实例。该标准指定了这些重载运算符的签名,并指定了实现如何应用这些重载。 foo
和 bar
究竟如何相加:这取决于重载运算符的实现者。
关于c++ - C/C++ 中的运算符在哪里定义以及它们是如何在这些语言中实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6747581/