zoukankan      html  css  js  c++  java
  • C++重载运算符简单总结

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

    一、基本概念

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

    二、规则

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

      具体规则见下表:

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

    三、注意

    1. 一般情况下(除了函数调用操作符),重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。一元运算符有一个参数,二元运算符有两个参数。对于二元运算符来说,左侧运算对象传递给第一个参数,右侧运算对象传递给第二个参数。
    2. 除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参。
    3. 当一个重载的运算符是成员函数时,this 绑定到左侧运算对象。所以成员运算符函数的(显式)参数数量比运算对象的数量少一个。
    4. 对于一个运算函数来说,它或者是类的成员,或者至少含有一个类类型的参数:
      //错误:不能为int重定义内置的运算符
      int operator+(int ,int);
  • 相关阅读:
    区间DP+next求循环节 uva 6876
    连分数(分数类模板) uva6875
    二分+最短路 uvalive 3270 Simplified GSM Network(推荐)
    叉积判断 POJ1696
    树形DP+树状数组 HDU 5877 Weak Pair
    团 大连网赛 1007 Friends and Enemies
    微信支付少一分钱
    数据类型的转换
    什么是机器学习
    config.m4
  • 原文地址:https://www.cnblogs.com/uangyy/p/4616603.html
Copyright © 2011-2022 走看看