实验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...