第十二周实践项目1.2-实现复数类中的运算符重载
来源:互联网 发布:libx264安装 linux 编辑:程序博客网 时间:2024/06/06 04:27
问题及代码:
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月18日 *版 本 号:v1.0 * *问题描述:请用类的友元函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除 *输入描述: *程序输出: */ #include <iostream>using namespace std;class Complex{public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} friend Complex operator+(Complex &c1, Complex &c2); friend Complex operator-(Complex &c1, Complex &c2); friend Complex operator*(Complex &c1, Complex &c2); friend Complex operator/(Complex &c1, Complex &c2); void display();private: double real; double imag;};Complex operator+(Complex &c1, Complex &c2){ return Complex(c1.real+c2.real,c1.imag+c2.imag);}Complex operator-(Complex &c1, Complex &c2){ return Complex(c1.real-c2.real,c1.imag-c2.imag);}Complex operator*(Complex &c1, Complex &c2){ return Complex(c1.real*c2.real,c1.imag*c2.imag);}Complex operator/(Complex &c1, Complex &c2){ return Complex(c1.real/c2.real,c1.imag/c2.imag);}void Complex::display(){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main(){ Complex c1(3,4),c2(5,-10),c3; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); return 0;}
运行结果:
知识点总结:
要注意成员函数完成运算符重载,和友元函数完成时的区别:
1.在定义构造函数时,成员函数包含一个参数而友元函数包含两个参数。
例如
<span style="font-family: Arial, Helvetica, sans-serif;">friend Complex operator+(Complex &c1, Complex &c2);</span>
<span style="font-family: Arial, Helvetica, sans-serif;">2.在实现的时候友元函数:</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="cpp">Complex operator+(Complex &c1, Complex &c2){ return Complex(c1.real+c2.real,c1.imag+c2.imag);}而成员函数:
<span style="font-family: Arial, Helvetica, sans-serif;">Complex Complex::operator+(const Complex &c2){ return Complex(real+c2.real,imag+c2.imag);}</span>
<span style="font-family: Arial, Helvetica, sans-serif;">学习心得:</span>
<span style="font-family: Arial, Helvetica, sans-serif;">要善于总结规律!</span>
0 0
- 第十二周实践项目1.2-实现复数类中的运算符重载
- 第十二周上机实践项目-项目1-实现复数类中的运算符重载
- 第十二周上机实践项目-项目1-(2)-实现复数类中的运算符重载
- 第十二周上机实践项目-项目1-3-实现复数类中的运算符重载
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载(1)
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (3)
- 第十二周实践项目1-实现复数类中的运算符重载
- 第十二周实践项目1.3-实现复数类中的运算符重载
- 第十二周上机实践项目1(1):实现复数类中的运算符重载
- 第十二周上机实践项目1(2):实现复数类中的运算符重载
- 第十二周上机实践项目1(3):实现复数类中的运算符重载
- 第十二周项目一实现复数中的运算符重载
- 第十二周项目 1.2实现复数类中的运算符重载
- 第十二周项目1-实现复数类中的运算符重载(1.2友元函数)
- 第十二周项目1.2—实现复数类中的运算符重载(友元函数)
- 第十二周项目1.2—实现复数类中的运算符重载(友元函数)
- 第十二周实践项目1————实现复数类中的运算符重载之成员函数
- UNIX网络编程:消息队列
- LeetCode LRU Cache
- php面向对象编程入门
- #hiho1099 Constellations枚举法的应用
- 非静态内部类
- 第十二周实践项目1.2-实现复数类中的运算符重载
- activity四种启动模式
- VS2013编译notepad++源代码(默认已经安装好vs2013)
- 第十一周项目1.2— 点 圆 圆柱类族的设计
- Java学习笔记:操作符易错内容
- 如何一步步学习到精通JavaScript
- ORACLE数据库安装条件-LINUX
- Collections中sort()和Arrays中的sort方法分析
- shell sed命令