C++——类的多态性(一)

目的

掌握运算符重载的使用方法

内容

编程题

1.(1)以成员函数的方式,实现运算符“+”的重载,程序运行结果保持不变; (2)以友元函数的方式,实现运算符“+”的重载,程序运行结果保持不变。

代码:
(1)

#include
class Box
{
public:
	Box(){}
	Box(int l,int b, int h)
	{
	length=l;
	breadth=b;
	height=h;
	}
	Box operator+(Box& b)
	{
	Box box;
	box.length=length+b.length;
   box.breadth=breadth+b.breadth;
	box.height=height+b.height;
	return box;
	}
   void print()
   {
   cout<<"length:"<

结果:
C++——类的多态性(一)_第1张图片
(2)

#include
class Box
{
public:
	Box(){}
	Box(int l,int b, int h)
	{
	length=l;
	breadth=b;
	height=h;
	}
   friend Box operator+(Box& b,Box& b1);
   void print()
   {
   cout<<"length:"<

结果:
C++——类的多态性(一)_第2张图片

2.掌握以类的成员函数重载运算符的使用方法

代码:

#include
class Time
{
private:
	int hour;
	int minute;
public:
	Time(){hour=0; minute=0;}
	Time (int h,int m);
	Time operator+(Time &t2);
	void display();
};
Time::Time(int h,int m)
{
hour=h;
minute=m;
}
Time Time::operator +(Time &t2)
{
Time t;
t.hour=hour+t2.hour;
t.minute=minute+t2.minute;
if(t.minute>=60)
{
t.minute-=60;
t.hour++; 
}
return t;
}
void Time::display()
{
cout<image.png

3.掌握以非成员函数重载运算符的使用方法

代码:

#include
#include
class Matrix
{
private:
int mat[2][3];
public:
Matrix();
friend Matrix operator+(Matrix &a,Matrix &b);
void input();
void display();
};
Matrix::Matrix()
	  {
	  for(int i=0;i<2;i++)
		  for(int j=0;j<3;j++)
			  mat[i][j]=0;
	   }
Matrix operator+(Matrix &a,Matrix &b)
{
Matrix c;
for(int i=0;i<2;i++)
		  for(int j=0;j<3;j++)
			 c.mat[i][j]=a.mat[i][j]+b.mat[i][j];
		  return c;
}
void Matrix::input()
{
for(int i=0;i<2;i++)
		  for(int j=0;j<3;j++)
			  cin>>mat[i][j];
}
void Matrix::display()
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
cout<

结果:
C++——类的多态性(一)_第3张图片

4.定义一个Point类,包含私有的数据成员x,y,按要求完成下面的编程

(1)重载运算符“<<”和“>>”,用于输出输入Point类的对象。
(2)重载运算符“++”和“–”,实现对Point类对象的自增和自减运算(x和y同时加1或减1),要求同时重载前缀和后缀的形式。
(3)重载运算符“+”和“-”,实现两个点坐标的相加与相减。

代码:

#include
#include
class point
{
private:
int x,y;
public:
friend ostream & operator<<(ostream&,point&);
friend istream & operator>>(istream&,point&);
point operator++()
{
x++;
y++;
return *this;
}
point operator++(int)
{
x++;
y++;
return *this;
}
point operator--()
{
x--;
y--;
return *this;
}
point operator--(int)
{
x--;
y--;
return *this;
}
friend point operator+(point &,point &);
friend point operator-(point &,point &);
};
ostream & operator<<(ostream &out,point &a)
{
	out<<"x坐标为:"<>(istream &in,point &b)
{
	in>>b.x;
	in>>b.y;
	return in;
}

point operator+(point &b,point &b1)
{
point bb;
bb.x=b1.x+b.x;
bb.y=b1.y+b.y;
return bb;
}
point operator-(point &b,point &b1)
{
point bb;
bb.x=b.x-b1.x;
bb.y=b.y-b1.y;
return bb;
}
void getint(int &f)
{
cin>>f;
int a;
a=f;
}
int main()
{
point a,b,f,z;
int c,d,e;
cout<<"请输入两个类对象的x和y坐标:"<>a;
cout<>b;
cout<

结果:

自增:
C++——类的多态性(一)_第4张图片
自减:
C++——类的多态性(一)_第5张图片
相加:
C++——类的多态性(一)_第6张图片
相减:
C++——类的多态性(一)_第7张图片

你可能感兴趣的:(#,C++,c++,多态)