c++ 运算符重载

重载方法

运算符的重载实质上是函数的重载。函数的重载就是对一个已有函数赋予新的含义,使之实现新的功能。

重载运算符的函数一般格式如下:

函数类型 operator 运算符名称 (形参列表)
{对运算符的重载处理}

例如:
Complex operator + (Complex &c1,Complex &c2);

operator是关键字,专门用于定义重载运算符的函数。

重载规则

  • c++不允许用户自定义新的运算符,只能对已有的c++运算符进行重载
  • 重载不能改变运算符运算对象。如“》”是双目运算符,重载后仍为双目,需要两个参数。运算符“+”既可以作为单目运算,也可以作为双目运算,可以分别将他们重载为单目运算或双目运算。
  • 重载不能改变运算符的优先级。如“*”和“/”优先于“+”和“-”,不论怎么重载,各运算符之间的优先级不会改变。
  • 重载不嗯呢改变运算符的结合性。如赋值运算符=是右结合(自右至左),重载后仍为右结合
  • 重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数
  • 重载的运算符必须和用户定义的自定义类型的对象一起 使用,其参数至少应有一个类对象(或类对象的引用)。
Complex operator + (int a,Complex &c)
{return Complex(a+c.real,c.imag);}
  • 用于类对象的运算符一般必须重载,但有两个列外,运算符=和&不必用户重载。(1、复制运算符=可以用于每一个类对象,可以 利用它在同类对象之间相互赋值。有时心痛提供的默认的对象赋值运算符不能满足程序的要求,在这种情况下,就需要自己重载复制运算符。2、地址运算符&也不必重载,它能返回类对象在内存中的起始地址。)
  • 运算符重载函数可以是类的成员函数,也可以是类的友元函数,还有是即非类的成员函数也不是友元函数的普通函数。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C++运算符重载-上篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 2,382评论 0 51
  • C++语言的一个很有意思的特性就是除了支持函数重载外还支持运算符重载,原因就是在C++看来运算符也算是一种函数。比...
    欧阳大哥2013阅读 2,779评论 0 8
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,516评论 0 49
  • C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...
    Nancy_Shi阅读 1,099评论 1 3
  • 运算符重载 当运算符作用域类类型对象时,可以通过运算符重载重新定义该运算符的含义,明智使用运算符重载能令我们的代码...
    土豆吞噬者阅读 2,648评论 0 0

友情链接更多精彩内容