C中的运算符重载

Lei*_*sen 6 c c++ operator-overloading operators

在C++中,我可以通过执行以下操作来更改特定类的运算符:

MyClass::operator==/*Or some other operator such as =, >, etc.*/(Const MyClass rhs) {
    /* Do Stuff*/;
}
Run Code Online (Sandbox Code Playgroud)

但是由于C中没有类(默认内置),所以,我怎样才能对一般函数进行运算符重载?

例如,如果我没记错的话,导入stdlib.h会给你 - >运算符,它只是(*strcut_name).struct_element的语法糖.

那么我怎么能在C中做到这一点?

谢谢.

Mar*_*off 15

普通旧C没有任何形式的运算符重载.->访问指针成员的"运算符"是标准C,并不由任何头文件引入.

  • @Leif:我认为宏不适合你说的话.如果你想要`struct foo`有一些加法概念,那么你通常会定义一个函数`foo add_foos(foo lhs,foo rhs)`或者那种程度的东西.没有必要让预处理器参与其中.如果稍后切换到C++,那么可以重载`+`来调用`add_foos`. (5认同)

AnT*_*AnT 5

C语言中的内置运算符被重载.您可以使用二进制+求和整数,浮点数和执行指针运算这一事实是运算符重载的典型示例.

但是,C没有为用户级操作员重载提供任何功能.您无法在C中定义自己的运算符.