zoukankan      html  css  js  c++  java
  • 运算符重载的注意事项

    在 C++ 中进行运算符重载时的注意事项:

    • 运算符重载的实质是将运算符重载为一个函数,使用运算符的表达式就被解释为对“运算符函数”的调用。
    • 运算符可以被重载为全局函数,也可以被重载为成员函数。一般来说,倾向于将运算符重载为成员函数,这样能够较好地体现运算符和类的关系。
      • 运算符被重载为全局函数时,函数参数的个数就是运算符的操作数个数,运算符的操作数就成为函数的实参。
      • 运算符被重载为成员函数时,函数参数的个数就是运算符的操作数个数减一,运算符的操作数有一个成为函数作用的对象,其余的成为函数的实参。
    • C++ 规定,运算符重载不改变运算符的优先级。
    • 以下运算符不能被重载:".",".*","::","?:",sizeof 。
    • 重载运算符 "()"、"[]"、"->"、赋值运算符 "="和类型强制转换运算符 时,只能将它们重载为成员函数,不能重载为全局函数。
    • 必要时需要重载赋值运算符 "=" ,即进行深拷贝,以避免两个对象内部的指针指向同一片存储空间。
    • 类型的名字可以作为强制类型转换运算符,也可以被重载为类的成员函数。它能使得对象被自动转换为某种类型。
    • 重载运算符时,应该尽量保留运算符原本的用法和特性。例如重载 "+" 运算符,完成的功能就应该类似于做加法,如果在其中做减法就是不合适的;再例如,赋值运算符 "=" ,它是可以连用的,这个特性在重载后也应该保持,所以 operator= 函数一般需要返回其所作用对象的引用,以保持 "=" 连用的这个特性。
      在这里插入图片描述
  • 相关阅读:
    第 14 章 结构和其他数据形式(names3)
    第 14 章 结构和其他数据形式(names)
    第 13 章 文件输入/输出 (把文件附加到另一个文件末尾)
    第 13 章 文件输入/输出 (标准I/O)
    第 12 章 存储类别、链接和内存管理(存储类别)
    JS鼠标滚轮判断向上还是向下滚动
    js中一些自带方法和属性
    函数的传入的参数(实参和形参)
    css3实现翻书效果
    redis集群安装
  • 原文地址:https://www.cnblogs.com/ltimaginea/p/13997397.html
Copyright © 2011-2022 走看看