运算符重载需要注意的事项:

特殊情况:

  1. = () [ ]  -> 不能重载为类的友元函数!!!(否则可能和C++的其他规则矛盾),只能使用成员函数形式进行重载。

     2. 如果运算符的第一个操作数要求使用隐式类型转换,则必须为友元函数(成员函数方式的第一个参数是this指针)

注意:

同一个运算符重载, 不能同时使用两种方式来重载,会导致编译器不知道选择哪一个(二义性)

运算符重载的禁区和规则

1. 为了防止对标准类型进行运算符重载,
C++规定重载运算符的操作对象至少有一个不是标准类型,而是用户自定义的类型

   比如不能重载 1+2

   但是可以重载  cow + 2 和 2 + cow   // cow是自定义的对象

2.不能改变原运算符的语法规则, 比如不能把双目运算符重载为单目运算

  1. 不能改变原运算符的优先级

  1. 不能创建新的运算符,比如 operator**就是非法的, operator*是可以的

  1. 不能对以下这四种运算符,使用友元函数进行重载

   = 赋值运算符,()函数调用运算符,[ ]下标运算符,->通过指针访问类成员

6. 不能对禁止重载的运算符进行重载

不能被重载的运算符

成员访问

.

域运算

::

内存长度运算

sizeof

三目运算

 ? : :

预处理

#


可以被重载的运算符

双目运算符

+    -    *    /    %

关系运算符

==  !=   <   <=   >   >=

逻辑运算符

&&  ||    !

单目运算符

+(正号)   -(负号)  *(指针)  &(取地址)  ++   --

位运算

&    |   ~    ^    <<(左移)    >>(右移)

赋值运算符

=   +=   -=    *=   /=   %=  &=  |=  ^=  <<=   >>=

内存分配

new   delete  new[ ]   delete[ ]

其他

( )  函数调用

-> 成员访问
[ ]   下标

,  逗号

相关推荐

  1. 运算符重载需要注意事项:

    2024-02-01 16:08:05       53 阅读
  2. 软件重构要点及注意事项

    2024-02-01 16:08:05       31 阅读
  3. MySQL各版本间差异以及需要注意事项

    2024-02-01 16:08:05       42 阅读
  4. 前端中学习 HTML 需要注意重点难点

    2024-02-01 16:08:05       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 16:08:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 16:08:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 16:08:05       82 阅读
  4. Python语言-面向对象

    2024-02-01 16:08:05       91 阅读

热门阅读

  1. SQL中LIMIT的简单用法

    2024-02-01 16:08:05       50 阅读
  2. OpenVoice文本转语音大模型实战部署

    2024-02-01 16:08:05       44 阅读
  3. 线程池相关的类学习

    2024-02-01 16:08:05       40 阅读
  4. Linux——如何使用sftp命令轻松上传和下载文件

    2024-02-01 16:08:05       53 阅读
  5. 网安面试指南——(渗透,攻击,防御)

    2024-02-01 16:08:05       45 阅读
  6. 【笔记】计算文件夹的大小

    2024-02-01 16:08:05       58 阅读
  7. MySQL中的SET数据类型详解

    2024-02-01 16:08:05       54 阅读
  8. 初始化服务器

    2024-02-01 16:08:05       58 阅读