C程序设计实验6

实验6运算符重载实验目的?掌握运算符重载的规则;?掌握运算符成员函数与运算符友元函数的实现及应用;?学会定义类中单目和双目运算符的重载函数;?理解重载运算符的作用,学会对典型的运算符进行重载。实验学时本次实验需要2个学时。实验要求?实验上机之前,根据实验内容要求,自行设计编写程序,完成预习报告。?实验上机时调试并修正程序。?当次上机结束前分析错误原因并给出实验结论,提交实验报告。实验内容1.基础部分(1)定义复数类complex,包括私有数据成员实部real和虚部image。定义该类的构造,拷贝构造,析构函数。为该类重载运算符+,-(友元函数),前置和后置++,--(成员函数),插入符和提取符<<,>>(友元函数)。在main函数里定义复数对象,测试重载的这些运算符。2.进阶部分(2)设计一个mystring类,包括数据成员char*pstr;和intlength;通过运算符重载实现字符串的输入>>、输出<<、连接+=、赋值=、关系运算(==、!=、>、<)、下标[]等运算。/*(1)定义复数类complex,包括私有数据成员实部real和虚部image。定义该类的构造,拷贝构造,析构函数。为该类重载运算符+,-(友元函数),前置和后置++,--(成员函数),插入符和提取符<<,>>(友元函数)。在main函数里定义复数对象,测试重载的这些运算符。#include<iostream>word编辑版.#include<string>usingnamespacestd;classComplex{public:Complex(intreal1=0,intimage1=0):real(real1),image(image1){}~Complex(){};friendComplexoperator+(constComplex&a1,constComplex&a2);friendComplexoperator-(constComplex&a1,constComplex&a2);Complexoperator++();Complexoperator++(int);Complexoperator--();Complexoperator--(int);friendostream&operator<<(ostream&os,constComplex&a3);friendistream&operator>>(istream&is,Complex&a3);private:intreal;intimage;};Complexoperator+(constComplex&a1,constComplex&a2){returnComplex(a1.real+a2.real,a1.image+a2.image);}Complexoperator-(constComplex&a1,constComplex&a2){returnComplex(a1.real-a2.real,a1.image-a2.image);}ComplexComplex::operator++(){++real;++image;return*this;}ComplexComplex::operator++(int)word编辑版.{Complexa=*this;++(*this);returna;}ComplexComplex::operator--(){--real;--image;return*this;}ComplexComplex::operator--(int){Complexa=*this;--(*this);return*this;}ostream&operator<<(ostream&os,constComplex&a3){os<<a3.real<<+<<a3.image<<i;returnos;}istream&operator>>(istream&is,Complex&a3){is>>a3.real>>a3.image;returnis;}intmain(){Complexa4(4,5),a5(6,7),A,B;cout<<a4:<<a4<<endl;cout<<a5:<<a5<<endl;潣瑵??请重新为a4,a5对象输入数据:;word编辑版.cin>>a4;cin>>a5;潣瑵??重新输入后a4:<<a4<<endl;潣瑵??重新输入后a5:<<a5<<endl;A=a4+a5;潣瑵??重载修改后加法A:;cout<<A<<endl;A=a4-a5;潣瑵??重载修改后减法A:;cout<<A<<endl;潣瑵?尼重载修改后a4前置++:<<++a4<<endl;潣瑵?尼重载修改后a5后置++:<<a5++<<endl;潣瑵??重载修改后再次修改的a4前置--:<<--a4<<endl;潣瑵??重载修改后再次修改的a5后置--:<<a5--<<endl;return0;}(2)设计一个mystring类,包括数据成员char*pstr;和intlength;通过运算符重载实现字符串的输入>>、输出<<、连接+=、赋值=、关系运算(==、!=、>、<)、下标[]等运算。#include<iostream>#include<string>usingnamespacestd;classmystring{public:mystring(char*p);~mystring(){free(pstr);}word编辑版.mystring&operator=(mystring&s);voidoperator+=(mystring&a){this->pstr=(char*)realloc(this->pstr,this->length+a.length+1);strcpy(this->pstr+(this->length),a.pstr);}char&operator[](intn);booloperator==(constmystring&s){if(strcmp(this->pstr,s.pstr)==0)return1;elsereturn0;}booloperator!=(constmystring&s){if(strcmp(this->pstr,s.pstr)!=0)return1;elsereturn0;}booloperator<(constmystring&s){if(strcmp(this->pstr,s.pstr)<0)return1;el...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?