当前位置:首页 > C++程序设计实验6
实验6运算符重载
实验目的
掌握运算符重载的规则;
掌握运算符成员函数与运算符友元函数的实现及应用; 学会定义类中单目和双目运算符的重载函数;
理解重载运算符的作用,学会对典型的运算符进行重载。
实验学时
本次实验需要2个学时。
实验要求
实验上机之前,根据实验内容要求,自行设计编写程序,完成预习报告。 实验上机时调试并修正程序。
当次上机结束前分析错误原因并给出实验结论,提交实验报告。
实验内容 1. 基础部分
(1) 定义复数类complex,包括私有数据成员实部real和虚部image。定义该 类的构造,拷贝构造,析构函数。为该类重载运算符 +,-(友元函数),前置和 后置++,--(成员函数),插入符和提取符VV,>> (友元函数)。在main函数里 定义复数对象,测试重载的这些运算符。
2. 进阶部分
(2) 设计一个 mystring类,包括数据成员Char * pstr;和int Iength;通过运算 符重载实现字符串的输入 >>、输出 <<、连接+=、赋值=、关系运算(==、!=、>、 <)、下标[]等运算。
/*( 1)定义复数类CamPIeX,包括私有数据成员实部 real和虚部image。定义该类的构造, 拷贝构造,析构函数。
为该类重载运算符+,-(友元函数),前置和后置++,--(成员函数),插入符和提取符VV ,? (友元函数)。
在main函数里定义复数对象,测试重载的这些运算符。 #in CIUdeViaStream> #in CIUdeVStri ng>
USing n amespace std; class Complex { public:
Complex(i nt real1=0,i nt image1=0) :real(real1),image(image1){} ~Complex() {};
friend Complex OPerator+(c OnSt Complex &a1, ConSt Complex &a2); friend Complex OPeratOr-(C OnSt Complex &a1, ConSt Complex &a2); Complex OPerator++(); Complex OPerator++(i nt); Complex OPerator--(); Complex OPerator--(i nt);
friend OStream& OPerator<<(ostream& os, ConSt Complex&a3); friend istream& OPerator>>(istrea m& is. Complex&a3);
private: int real; int image; };
Complex OPerator+(c OnSt Complex &a1, ConSt Complex &a2) {
retur n Complex(a1.real + a2.real, a1.image + a2.image); }
Complex OPeratOr-(C OnSt Complex &a1, ConSt Complex &a2) {
return Complex(a1.real - a2.real, a1.image - a2.image); }
Complex Complex::OPerator++() { ++real; ++image; return *this; }
Complex Complex::OPerator++(i nt) {
Complex a = *this; ++(*this); return a;
Complex ComPIeX::oPerator--() { --real; --image; return *this;
}
Complex Complex::OPerator--(i nt) {
Complex a = *this; --(*this); return *this; }
OStream& OPerator<<(ostrea m& os, ConSt Complex& a3) {
os<< a3.real << \return os; }
istrea m& OPerator>>(istream& is, Complex&a3) {
is >> a3.real >> a3.image; return is; }
int mai n() {
Complex a4(4,5), a5(6,7),A,B; cout << \cout << \
cout << \请重新为a4,a5对象输入数据: Cin >> a4;
I!
Cin >> a5;
CoUt << \重新输入后 a4: \CoUt << \重新输入后 a5: \A = a4 + a5;
cout << \重载修改后加法 A:\cout << A << en dl; A = a4 - a5;
cout << \重载修改后减法 A:\cout << A << en dl;
cout <<\重载修改后 a4 前置 ++:\cout <<\重载修改后 a5 后置 ++:\cout << \重载修改后再次修改的 a4前置--:\cout << \重载修改后再次修改的 a5后置--:\return 0;
}
(2)设计一个 mystring类,包括数据成员 int Iength;通过运算符重载实现字符串的输入
Char * pstr;和
>>、输出 <<、连接+=、赋值=、
关系运算(==、!=、>、<)、下标[]等运算。 #i nclude
mystri ng(char *p); ~mystri ng() { free(pstr); }
mystri ng& OPerator=(mystri ng& s);
共分享92篇相关文档