C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex
来源:互联网 发布:linux git 编辑:程序博客网 时间:2024/05/21 03:54
今天答应帮朋友做一个C++题目,颇费了一番周折,终于还是写出来了,让很久没敲代码的我反省了一下,也回忆了以前学过的知识。
题目要求如下:
一、按下列要求编制复数类,并调试通过:
1) 基本的构造函数;
2) 成员运算符+、-实现复数的加减运算;
3) 友元运算符+、-实现更合理的加减运算;
4) 运算符<<和>>实现复数类的输出输入。
多态性:是指同样的消息被不同类型的对象接收时导致不同的行为。
面向对象的多态性分为四类:重载多态,强制多态,包含多态,参数多态。
下面要用到运算符重载多态。
多态性从实现的角度来讲分为两类:
A.编译时的多态:在编译过程中确定了同名操作的具体操作对象。
B.运行时的多态:在程序运行过程中动态的确定操作所针对的具体对象。
而确定操作的具体对象的过程也就是传说中的绑定(联编)。绑定说的通俗一点就是把一个标识符名和一个存储地址联系在一起的过程。
而绑定又分为:静态绑定和动态绑定。
静态绑定:绑定工作在编译连接阶段完成的情况。
动态绑定:绑定工作在运行阶段完成的情况。
下面我们要用到的运算符重载就属于静态绑定。
程序代码如下:
#include<iostream.h>class Complex{public:Complex(double r=0.0,double i=0.0):real(r),imag(i){cout<<"使用了拷贝构造函数"<<endl;}Complex operator+ (const Complex &c2)const;//通过成员函数实现两个复数的加减操作Complex operator- (const Complex &c2)const;friend Complex operator+(const Complex &c1,const Complex &c2);//通过友元函数实现两个复数的加减操作friend Complex operator-(const Complex &c1,const Complex &c2);friend istream &operator>> (istream &input,Complex &c);//重载输入输出运算符friend ostream &operator<< (ostream &out,const Complex &c);private:double real;double imag;} ;Complex Complex::operator+ (const Complex &c2)const{return Complex(this->real+c2.real,this->imag+c2.imag);}Complex Complex::operator- (const Complex &c2)const{return Complex(this->real-c2.real,this->imag-c2.imag);}Complex operator+(const Complex &c1,const Complex &c2){return Complex(c1.real+c2.real,c1.imag+c2.imag);}Complex operator-(const Complex &c1,const Complex &c2){return Complex(c1.real-c2.real,c1.imag-c2.imag);}istream &operator>> (istream &input,Complex &c){input>>c.real>>c.imag;return input;}ostream &operator<< (ostream &out,const Complex &c){out<<"("<<c.real<<","<<c.imag<<")"<<endl;return out;}int main(){Complex c1(5,4),c2,c3;cin>>c2;//调用输入运算符cout<<c1<<c2<<c3;//调用重载过后的输出运算符c3=c1.operator +(c2);//明确调用成员函数cout<<c3;c3=operator +(c1,c2);//调用友元函数cout<<c3;return 0;}
程序运行截图如下:
注:本程序是在VC++6.0中编写的,用其他编译器可能需要修改一下头文件,这是VC6.0的一个BUG。
2 0
- C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex
- 友元函数实现复数类中的运算符重载
- 实现复数类中的友元函数运算符重载
- 实现复数类中的运算符重载 友元函数
- 友元函数实现复数中的运算符重载
- 用友元函数实现复数类的运算符重载
- 项目一--用类的友元函数实现复数类中的运算符重载
- 8-1实现复数类中的运算符重载(友元函数)
- 第八周——友元函数实现复数类中运算符重载
- 第八周——友元函数实现复数类中运算符重载(2)
- 实现复数类中运算符的重载(利用友元函数)
- 第八周 项目一 (2) 实现复数类中的运算符重载 友元函数
- 第八周 项目一-复数类中的运算符重载(2)友元函数实现
- 第八周 【项目1-实现复数类中的运算符重载】友元函数
- 实现复数类中的运算符重载(友元函数)
- 第八周项目1-2:实现复数类中的运算符重载-友元函数
- 第8周项目1-实现复数类中的运算符重载(友元函数)
- 第十二周项目1-实现复数类中的运算符重载(1.2友元函数)
- ubuntu远程控制其他电脑(window & linux)
- 变量的声明和定义有什么区别
- 地理信息系统基础算法(二)判断两线段是否相交
- Tomcat设置系统启动
- pat 1030. Travel Plan (30)
- C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex
- 黑马程序员——OC学习——self和super关键字
- UML---活动图
- 既然说爱了,就不要说放弃
- Android Studio——R文件在哪里
- servlet入门第一课
- TabLayout的使用分享
- 几款常用PHP开发工具
- 欧几里得算法 最大公约数(Java)