【问题标题】:Is it possible to overload postfix unary operator besides the ++ and --除了 ++ 和 -- 是否可以重载后缀一元运算符
【发布时间】:2014-05-11 17:52:15
【问题描述】:

在c++标准中说

前缀一元运算符应由非静态成员实现 没有参数的函数(9.3)或一个非成员函数 参数。

但是没有关于后缀运算符重载的一些信息。

【问题讨论】:

  • 你为什么不读完那段?
  • 除了++--之外还有哪些后缀一元运算符?
  • @Mat 我读过关于用户定义的文字。什么是?

标签: c++ overloading operator-keyword


【解决方案1】:

关于后缀运算符 (13.5.7)

名为 operator++ 的用户定义函数实现了前缀和 后缀 ++ 运算符。如果这个函数是一个成员函数,没有 参数,或具有一个类参数的非成员函数或 枚举类型,它定义了前缀自增运算符++ 该类型的对象。如果函数是一个成员函数 参数(应为 int 类型)或非成员函数 两个参数(其中第二个应为 int 类型),它定义 该类型对象的后缀增量运算符 ++。当。。。的时候 使用 ++ 运算符调用后缀增量, int 参数的值为零。

【讨论】:

    【解决方案2】:

    operator--operator++ 不常见,因为它们以前缀和后缀形式存在,因此需要做一些事情来区分两者。正如您已经注意到的,他们决定根据后缀表单接收额外(未使用的)参数来区分。

    您可以重载其他后缀运算符(例如,operator[]operator()operator->),但您无需执行任何特殊操作来重载它们,因为它们仅以后缀形式存在。

    【讨论】:

    • 你的意思是除了++、--、[]、()、->之外没有办法定义后缀一元运算符函数?
    • @DmitryFucintv:我现在能记住的就是这些了,但我(至少最近)还没有通过标准的那一部分来确保没有其他标准。跨度>
    猜你喜欢
    • 2014-11-18
    • 1970-01-01
    • 2022-11-18
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多