操作符重载指的是将C++提供的操作符进行重新定义,使之满足我们所需要的一些功能。比如类的加减乘除。我们可以定义类中的某一个成员变量进行加减乘除。

在C++中可以重载的操作符有:
+  -  *  /  %  ^  &  |  ~  !  =  <  >  +=  -=  *=  /=  %=  ^=  &=  |= 
<<  >>  <<=  >>=  ==  !=  <=  >=  &&  ||  ++  --  ,  ->*  ->  ()  [] 
new  new[]  delete  delete[]

上述操作符中,[]操作符是下标操作符,()操作符是函数调用操作符。自增自减操作符的前置和后置形式都可以重载。长度运算符“sizeof”、条件运算符“:?”成员选择符“.”、对象选择符“.*”和域解析操作符“::”不能被重载

#include <iostream>
using namespace std;class complex
{
public:complex();complex(double a);complex(double a, double b);complex operator+(const complex & A)const;complex operator-(const complex & A)const;complex operator*(const complex & A)const;complex operator/(const complex & A)const;void display()const;
private:double real;   //复数的实部double imag;   //复数的虚部
};complex::complex()
{real = 0.0;imag = 0.0;
}complex::complex(double a)
{real = a;imag = 0.0;
}complex::complex(double a, double b)
{real = a;imag = b;
}//打印复数
void complex::display()const
{cout<<real<<" + "<<imag<<" i ";
}//重载加法操作符
complex complex::operator+(const complex & A)const
{complex B;B.real = real + A.real;B.imag = imag + A.imag;return B;
}//重载减法操作符
complex complex::operator-(const complex & A)const
{complex B;B.real = real - A.real;B.imag = imag - A.imag;return B;
}//重载乘法操作符
complex complex::operator*(const complex & A)const
{complex B;B.real = real * A.real - imag * A.imag;B.imag = imag * A.real + real * A.imag;return B;
}//重载除法操作符
complex complex::operator/(const complex & A)const
{complex B;double square = A.real * A.real + A.imag * A.imag;B.real = (real * A.real + imag * A.imag)/square;B.imag = (imag * A.real - real * A.imag)/square;return B;
}int main()
{complex c1(4.3, -5.8);complex c2(8.4, 6.7);complex c3;//复数的加法c3 = c1 + c2;cout<<"c1 + c2 = ";c3.display();cout<<endl;//复数的减法c3 = c1 - c2;cout<<"c1 - c2 = ";c3.display();cout<<endl;//复数的乘法c3 = c1 * c2;cout<<"c1 * c2 = ";c3.display();cout<<endl;//复数的除法c3 = c1 / c2;cout<<"c1 / c2 = ";c3.display();cout<<endl;return 0;
}

C++基本操作符重载相关推荐

  1. C++拾趣——有趣的操作符重载

    操作符重载是C++语言中一个非常有用的特性.它可以让我们比较优雅的简化代码,从而更加方便的编写逻辑. 为什么要使用操作符重载 一种常见的用法是重载<<运算符,让标准输出可以输出自定义的类型 ...

  2. 操作符重载——C/C++学习笔记

    此篇文章来自于网上,作为自己学习中的笔记,若有侵权行为,请告之,24小时之内必删除!下面就转入正题吧! 一.什么是操作符重载? 一看到重载,很容易就让人联想到成员函数重载,函数重载可以使名称相同的函数 ...

  3. C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载

    C++--构造函数(拷贝构造,拷贝复制),析构函数,操作符重载 构造函数与析构函数:: 涉及构造函数还可以看这篇文章C++搞懂深拷贝初始化=与赋值=的区别 1.声明和定义构造函数和析构函数 构造函数在 ...

  4. 【Groovy】map 集合 ( map 集合操作符重载 | 使用 << 操作符添加一个元素 | 代码示例 )

    文章目录 一.使用 " << " 操作符添加一个元素 二.代码示例 一.使用 " << " 操作符添加一个元素 对 map 集合 使用 ...

  5. 【Groovy】map 集合 ( map 集合操作符重载 | *. 展开操作符 | 代码示例 )

    文章目录 一.map 集合 " *. " 展开操作符 二.代码示例 一.map 集合 " *. " 展开操作符 对 map 集合使用 " *. &qu ...

  6. 【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )

    文章目录 一.map 集合 " - " 操作符重载 二.完整代码示例 一.map 集合 " - " 操作符重载 对 map 集合 使用 " - &qu ...

  7. 【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )

    文章目录 一.map 集合 " + " 操作符重载 二.代码示例 一.map 集合 " + " 操作符重载 对 map 集合使用 " + " ...

  8. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )

    文章目录 一.集合中的 " << " 操作符重载 1.使用集合中的 " << " 操作符添加一个元素 2.使用集合中的 " & ...

  9. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )

    文章目录 一.集合中的 " + " 操作符重载 二.集合中的 " - " 操作符重载 三.完整代码示例 一.集合中的 " + " 操作符重载 ...

  10. C++中逗号操作符重载的分析

    1,关注逗号操作符重载后带来的变化: 2,逗号操作符: 1,逗号操作符(,)可以构成都好表达式:exp1, exp2, exp3, ..., expN 1,逗号表达式用于将多个表达式连接为一个表达式: ...

最新文章

  1. dede自定义表单增加添加时间怎么弄
  2. Redis+分布式+设计模式+Spring全家桶+Dubbo阿里P8技术精选文档
  3. padarray函数
  4. Laravel5.2之Filesystem-从Dropbox中下载文件到AWS S3
  5. YUV420数据格式
  6. [Oracle] SQL*Loader 详细使用教程(3)- 控制文件
  7. Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结
  8. DecimalFormat的使用
  9. Docker-compose部署gitlab中文版
  10. mysql 错误的字符串值_这次被坑惨了,MySQL的隐式转换导致了一个线上BUG
  11. Oracle 12c升级指南
  12. 关于android百度导航不能出声音的解决办法
  13. mipi-csi-2解读_CSI:Visual Studio-无法将索引X处的Unicode字符转换为指定的代码页
  14. (五)SGE 命令 (1)qsub
  15. 使用java数据结构编写代码
  16. 浅析如何减小iOS版微信安装包的大小
  17. 计算机基础之计算机的发展历史
  18. 最大公约数和最小公倍数,你知道有几种求法吗?
  19. 使用TIM3和TIM4,驱动外接LED和STM32上已焊接的LED,实现2个 LED呼吸灯的效果
  20. Qt编写的项目作品6-可视化大屏电子看板系统

热门文章

  1. POJ2230 Watchcow——欧拉回路——Pku2230
  2. UA MATH567 高维统计专题1 稀疏信号及其恢复2 用L1-norm作为L0-norm的convex relexation
  3. jquery标签选择器应用示例
  4. powerdesigner基本使用 - 创建概念模型
  5. 操作系统pv操作学习总结
  6. VS 2010 IDE 宏学习总结
  7. Linux内核源码学习
  8. 图解weblogic安装
  9. [转]SQL,LINQ,Lambda语法对照图
  10. 修改IIS默认的30M