第八周实验报告(一)《方案三》拓展运算符功能
2012-04-09 19:14
483 查看
/*
实验目的:1.学会定义类中双目和单目运算符的重载函数
2.学会使用类的成员函数和友元函数实现运算符的重载
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:方案一 用类的重载运算符 +、-、*、/,使之能用于复数的加减乘除
* 作 者: 晁 阳
* 完成日期: 2012年 4 月 9 日
* 版 本 号: t.10
* 对任务及求解方法的描述部分
* 代码实现
#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 &c,const double &d);//声明重载运算符“+”的函数(复数加实数) friend Complex operator+(Complex &c,const double &d);//声明重载运算符“+”的函数(复数加实数) friend Complex operator-(Complex &c,const double &d);//声明重载运算符“-”的函数(复数加实数) friend Complex operator*(Complex &c,const double &d);//声明重载运算符“*”的函数(复数加实数) friend Complex operator/(Complex &c,const double &d);//声明重载运算符“/”的函数(复数加实数) friend Complex operator + (const double &d, Complex &c);//友元函数声明(实数加复数) friend Complex operator - (const double &d, Complex &c);//友元函数声明(实数加复数) friend Complex operator * (const double &d, Complex &c);//友元函数声明(实数加复数) friend Complex operator / (const double &d, Complex &c);//友元函数声明(实数加复数) friend Complex operator -(Complex &c);//声明一目运算符“-”函数 void display(); void display1(); private: double real; double imag; }; //下面定义成员函数Complex Complex::operator + (double &d) Complex operator + (Complex &c, const double &d)//定义重载运算符“+”的函数 { Complex c1; return Complex(c1.real= c.real+d, c1.imag = c.imag); } Complex operator-(Complex &c,const double &d)//定义重载运算符“-”的函数 { Complex c1; return Complex( c1.real = c.real-d, c1.imag = c.imag); } Complex operator*(Complex &c,const double &d)//定义重载运算符“*”的函数 { Complex c1; return Complex(c.real*d, c.imag); } Complex operator/(Complex &c,const double &d)//定义重载运算符“/”的函数 { Complex c1; return Complex(c.real/d, c.imag); } Complex operator + (const double &d, Complex &c)//定义友元函数(实数+复数) { Complex c1; return Complex(c.real+d, c.imag); } Complex operator - (const double &d, Complex &c)//定义友元函数(实数-复数) { Complex c1; return Complex(c.real-d, c.imag); } Complex operator * (const double &d, Complex &c)//定义友元函数(实数*复数) { Complex c1; return Complex(c.real*d, c.imag); } Complex operator / (const double &d, Complex &c)//定义友元函数(实数/复数) { Complex c1; return Complex(c.real/d, c.imag); } Complex operator - (Complex &c)//定义一目运算符“-”函数 一目运算符只能用 {return Complex( 0 - c.real,c.imag);} void Complex::display() { cout << "(" <<real<<","<<imag<<"i)"<<endl; } int main() { Complex c(3,4),c1; c1=c+5; cout<<"c+5="; c.display(); c=c-5; cout<<"c-5="; c.display(); c=c*5; cout<<"c*5="; c.display(); c=c-5; cout<<"c/5="; c.display(); c=5+c; cout<<"5+c="; c.display(); c=5-c; cout<<"5-c="; c.display(); c=5*c; cout<<"5*c="; c.display(); c=5/c; cout<<"5/c="; c.display(); c = -c; cout << "- c1 =" ; c.display(); system("pause"); return 0; }上机感言:通过友元函数定义,来实现运算符功能的拓展,注意在: 复数+实数定义时这样:Complex operator + (Complex &c, const double &d) 复数在前; 实数+复数定义时这样:Complex operator + (const double &d, Complex &c)实数在前;上图:
相关文章推荐
- 《C++第八周实验报告1-1(3)》---在方案二的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算
- 《C++第八周实验报告1-1(2)》---在方案二的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算
- 第八周实验报告(二)实现Time类中的运算符重载,并对运算符的重载进行测试
- 第八周实验报告(任务一)【扩展运算符的功能】
- 第八周实验报告(任务二)【Time类中运算符的重载】
- 第八周 项目1--扩展+、-、*、/运算符的功能,使之能与double型数据进行运算
- 第八周实验任务2--实现Time类中的运算符重载 --并对运算符的重载进行测试
- 第八周实验报告1.2
- 第八周实验报告(2)
- 第八周实验报告任务1
- 第八周实验报告(1-2)
- 第八周实验报告 任务二
- 第八周实验报告1
- 第八周实验报告(一)《方案一》用类的重载运算符 +、-、*、/,使之能用于复数的加减乘除
- 第八周实验报告1——友元
- 第八周实验报告2
- 第八周实验报告(1-3)
- 第八周实验报告(3)
- 第八周实验报告任务2
- 第八周实验报告4