关闭

C++ 实验九

718人阅读 评论(0) 收藏 举报
分类:


实验九
友元与运算符重载
【实验目的】
1、 掌握友元函数的使用方法;
2、 掌握使用运算符重载方法;
【实验内容】
1、 定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”
运算。
•分别用成员函数与友元函数编写运算符重载函数;
•在主函数中定义复数对象 c1(10,20)、c2(15,30),进行 c2-=c1 的复数运算,
并输出 c1、c2 的复数值。
2、 定义一个数组类 Array:
•其私有数据成员为整型一维数组 a[10];
•通过构造函数给数组赋初值;
•用 show 函数显示数组的元素值;
•用成员函数重载运算符 “+” , 直接实现两个一维数组对应元素相加的运算。
•在主函数中定义数组 a、b 分别为:
int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={4,5,6,7,8,9,10,11,12,13};
•用 Array 定义三个数组对象 arr1(a)、arr2(b)、arr3,执行 arr3=arr1+arr2 运
算,输出 arr3 的数组元素值。
•类似地,用友元函数重载运算符“+=” ,实现复合赋值运算:arr1+=arr2,
并输出 arr1 的元素值。
3、 定义一个人民币类 Money;
•类中数据成员为元、角、分;
•用成员函数与友元函数重载“――”运算符,实现人民币对象的减 1 运算;
•在主函数中定义人民币对象 m1=10 元 8 角 5 分及对象 m2、m3,对 m1 作
前置“――”并赋给 m2。对 m1 作后置“――”并赋给 m3。显示 m1、m2、m3
的结果。

1.

#include <IOSTREAM>
using namespace std;
class ComplexNum{
public:
	friend ostream& operator<<(ostream&out,const ComplexNum&cn);
	ComplexNum(double r,double i):real(r),imaginary(i){};
	ComplexNum& operator-=(const ComplexNum&b){
		real=real-b.real;
		imaginary=imaginary-b.imaginary;
		return *this;
	}
private:
	double real,imaginary;

};
ostream& operator<<(ostream&out,const ComplexNum&cn){
	out<<cn.real<<" + "<<cn.imaginary<<"i";
	return out;
}

int main(){
	ComplexNum c1(10,20),c2(15,30);
	c1-=c2;
	cout<<c1<<endl<<c2<<endl;
	return 0;
}
2.
#include <IOSTREAM>
using namespace std;
class Array{
public:
	Array(){

	}
	Array(const int b[]){
		for (int i=0;i<10;i++)
		{
			a[i]=b[i];
		}
	}
	void show(){
		for (int i=0;i<9;i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<a[i];
	}
	Array operator+(const Array&b) const
	{
		Array tmp;
		for (int i=0;i<10;i++)
		{
			tmp.a[i]=a[i]+b.a[i];
		}
		return tmp;
	}
	Array& operator+=(const Array&b){
		for (int i=0;i<10;i++)
		{
			a[i]+=b.a[i];
		}
		return *this;
	}
private:
	 int a[10];
};
int main(){
	int a[10]={1,2,3,4,5,6,7,8,9,10};
	int b[10]={4,5,6,7,8,9,10,11,12,13};
	Array arr1(a);
	Array arr2(b);
	Array arr3;
	arr3=arr1+arr2;
	arr3.show();
	arr1+=arr2;
	cout<<endl;
	arr1.show();
	return 0;
}

3.
#include <IOSTREAM>
using namespace std;
class Money{
public:
	Money(double y=0,double j=0,double f=0):yuan(y),jiao(j),fen(f){
	}
	Money&  operator--(int i){
		yuan--;
		return *this;
	}
	friend Money& operator--(Money&m1);
	friend ostream& operator<<(ostream&out,Money&m);
private:
	double yuan,jiao,fen;
};
Money& operator--(Money&m1){
	m1.yuan--;
	return m1;
}
ostream& operator<<(ostream&out,Money&m){
	out<<m.yuan<<"Ôª"<<m.jiao<<"½Ç"<<m.fen<<"·Ö"<<flush;
	return out;
}
int main(){
	Money m1(10,8,5);
	Money m2,m3;
	--m1;
	m2=m1;
	m1--;
	m3=m1;
	cout<<"m1: "<<m1<<endl;
	cout<<"m2: "<<m2<<endl;
	cout<<"m3: "<<m3<<endl;
	return 0;
}


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16708次
    • 积分:345
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论