实验6运算符重载
实验目的
掌握运算符重载的规则;
掌握运算符成员函数与运算符友元函数的实现及应用; 学会定义类中单目和双目运算符的重载函数;
理解重载运算符的作用,学会对典型的运算符进行重载。
实验学时
本次实验需要2个学时。
实验要求
实验上机之前,根据实验内容要求,自行设计编写程序,完成预习报告。 实验上机时调试并修正程序。
当次上机结束前分析错误原因并给出实验结论,提交实验报告。
实验内容
1. 基础部分
(1) 定义复数类complex,包括私有数据成员实部real和虚部image。定义该 类的构造,拷贝构造,析构函数。为该类重载运算符 +,-(友元函数),前置和 后置++,--(成员函数),插入符和提取符 <<,>> (友元函数)。在main函数里 定义复数对象,测试重载的这些运算符。
2. 进阶部分
(2) 设计一个 mystring类,包括数据成员char * pstr;和int length;通过运算 符重载实现字符串的输入 >>、输出 <<、连接+=、赋值=、关系运算(==、!=、>、 <)、下标[]等运算。
/*( 1)定义复数类complex,包括私有数据成员实部 real和虚部image。定义该类的构造, 拷贝构
造,析构函数。
为该类重载运算符+,-(友元函数),前置和后置++,--(成员函数),插入符和提取符<< ,? (友元函数)。
在main函数里定义复数对象,测试重载的这些运算符。
#in clude
#in clude
using n amespace std; class Complex { public:
Complex(i nt real1=O,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 Complex::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!
相关推荐: