第12周项目1—实现复数类中的运算符重载 (2)
2016-05-26 08:43
288 查看
//
2.*Copyright(c) 2016.烟台大学计算机与控制工程学院
3.*ALL rights reserved.
4.*文件名称:main.cpp
5.*作者:孙亚茹
6.*完成日期:2016年5月26日
7.*问题描述:定义复数重载运算符+,-,*,/,使之用于复数的加减乘除,用友元函数,而不是成员函数。
8.*//
![](http://img.blog.csdn.net/20160526083921279)
总结:
(1) 用友元函数运算符重载时,函数前不应该再加类名和冒号,因为友元函数不属于类的成员函数。
(2)友元函数能访问类内成员,但没有当前对象,所以形参应该有两个。
2.*Copyright(c) 2016.烟台大学计算机与控制工程学院
3.*ALL rights reserved.
4.*文件名称:main.cpp
5.*作者:孙亚茹
6.*完成日期:2016年5月26日
7.*问题描述:定义复数重载运算符+,-,*,/,使之用于复数的加减乘除,用友元函数,而不是成员函数。
8.*//
#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) { Complex c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c; } Complex operator-(Complex &c1,Complex &c2) { Complex c; c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag; return c; } Complex operator*(Complex &c1,Complex &c2) { Complex c; c.real=c1.real*c2.real; c.imag=c1.imag*c2.imag; return c; } Complex operator/(Complex &c1,Complex &c2) { Complex c; c.real=c1.real/c2.real; c.imag=c1.imag/c2.imag; return c; } void Complex::display() { cout<<"("<<real<<","<<imag<<"i)"<<endl; } //下面定义用于测试的main()函数 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) 用友元函数运算符重载时,函数前不应该再加类名和冒号,因为友元函数不属于类的成员函数。
(2)友元函数能访问类内成员,但没有当前对象,所以形参应该有两个。
相关文章推荐
- ceph优化的几个问题
- 第十一周上机实践项目2(1):存储班长信息的学生类
- Find the Duplicate Number
- jQuery动画入门--顺序执行
- 8大排序算法图文讲解
- 第十一周阅读项目(4)
- jQuery ajax - serialize() 方法
- android getView理解
- 2016qconbeijing
- 用.htaccess文件实现URL重写
- 判断一个链表是否是回文链表
- LeetCode126—Word Ladder II
- hdu_1115_Lifting the Stone(求多边形重心)
- 构造函数能是私有的吗?
- hdu_1115_Lifting the Stone(求多边形重心)
- C++程序设计语言练习5.11 map标准库应用
- PHP高手干货分享:不能不看的50个细节!
- LINUX 内核月报 taobao
- echarts实现动态传入数据刷新【可执行】
- iOS/Android/Web Url Encode空格处理