代码之家  ›  专栏  ›  技术社区  ›  Leif Andersen

C中的运算符重载

  •  6
  • Leif Andersen  · 技术社区  · 14 年前

    在C++中,我可以通过这样做来改变特定类上的运算符:

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

    但是由于C.so中没有类(默认情况下是内置的),所以我如何为常规函数执行运算符重载?

    例如,如果我没记错的话,导入stdlib.h会给您一个->运算符,它只是(*struct_name).struct_元素的语法糖。

    那我怎么能用C来做呢?

    谢谢您。

    4 回复  |  直到 14 年前
        1
  •  15
  •   Mark Rushakoff    14 年前

    普通的旧C没有任何形式的运算符重载。这个 -> 访问指针成员的“operator”是标准的C语言,不由任何头文件引入。

        2
  •  5
  •   AnT stands with Russia    14 年前

    C语言中的内置运算符是 超载 . 你可以使用二进制 + 对整数、浮点数求和并执行指针运算是 运算符重载 .

    但是,c不提供用户级运算符重载的功能。你不能在C中定义你自己的运算符。

        3
  •  1
  •   spoulson    14 年前

    这个 -> 结构指针解引用运算符是C规范的一部分。 stdlib.h 不影响这一点。

        4
  •  1
  •   user290149    14 年前

    当然,你不能在C语言中重载操作符。 运算符是C语言的一部分,不需要包含。