• C++重载运算符简单总结


      当运算符作用于类类型的运算对象时,可以通过运算符重载重新定义该运算符的含义。明智的使用运算符重载能令我们的程序更易于编写和阅读。

    一、基本概念

    1. 什么是运算符重载?
      重载的运算符是具有特殊名字的函数:它们的名字由关键字 operator 和其后要定义的运算符共同组成。
    2. 重载运算符的方式有哪些?
      一般可以通过类成员函数、友元函数或者是类外的普通函数重载运算符。

    二、规则

    1. 不能重载的运算符有:.  .*  ::  和 sizeof
    2. 友元函数和成员函数的使用场合:
      一般情况下,建议一元运算符元使用成员函数重载,二元运算符使用友元函数重载
      a. 运算符的操作需要修改类对象的状态,则使用成员函数。比如需要做左值操作数的运算符(=, +=, -=)
      b. 运算时,有数和对象的混合运算时,必须使用友元函数
      c. 二元运算符中,第一个操作数位非对象时,必须使用友元函数。如 << 和 >>

      具体规则见下表:

    运算符 建议使用
    所有一元运算符 成员函数
    = () [] -> 必须是成员函数
    += -= /= *= ^= &= != %= >>= <<= 成员函数
    所有其他的二元运算符 友元函数
    <<  >> 必须友元函数

    三、注意

    1. 一般情况下(除了函数调用操作符),重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。一元运算符有一个参数,二元运算符有两个参数。对于二元运算符来说,左侧运算对象传递给第一个参数,右侧运算对象传递给第二个参数。
    2. 除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参。
    3. 当一个重载的运算符是成员函数时,this 绑定到左侧运算对象。所以成员运算符函数的(显式)参数数量比运算对象的数量少一个。
    4. 对于一个运算函数来说,它或者是类的成员,或者至少含有一个类类型的参数:
      //错误:不能为int重定义内置的运算符
      int operator+(int ,int);
  • 相关阅读:
    IOS UIwebview 背景色调整
    文件的创建 判断是否存在文件 读取 写入
    IOS 关于ipad iphone5s崩溃 解决
    iOS tabbar 控制器基本使用
    iOS 关于流媒体 的初级认识与使用
    总结 IOS 7 内存管理
    iOS 应用首次开启 出现引导页面
    IOS UItableView 滚动到底 触发事件
    IOS 应用中从竖屏模式强制转换为横屏模式
    iOS 定位系统 知识
  • 原文地址:https://www.cnblogs.com/uangyy/p/4616603.html
Copyright © 2020-2023  润新知