/*设计一个Point类,这个类描述屏幕上一个点的位置,即有两个数据成员x,y分别来表示点的横坐标和纵坐标。
1、
定义带缺省参数的构造函数初始化Point类的对象,并输出信息“初始化点类的一个对象”。
2、
定义析构函数,输出信息“回收点类对象的内存空间”。
3、
定义成员函数Distance,用于计算两点之间的距离。
4、
定义成员函数show,输出一个Point类对象的坐标信息。
从Point类派生出一个Rectangle(矩形)类,Rectangle类有新的数据成员H、W、Area分别表示矩形的长、宽和面积。
1、
定义带缺省参数的构造函数初始化Rectangle类的对象,并输出信息“初始化矩形类的一个对象”。
2、
定义析构函数,输出信息“回收点矩形类对象的内存空间”。
3、
定义复制构造函数,用一个已存在的Rectangle类的对象去初始化另一个同类的对象。
4、
定义成员函数Area,用于求矩形的面积。
5、
定义Rectangle类的一个友元函数来重载“+”运算符,计算两个矩形的面积之和。
6、
定义成员函数show,输出一个Rectangle类对象的相关信息。
7、
使用赋值兼容规则,当用基类的对象调用show函数时,调用的是派生类的show函数。
main函数自己定义,但是要求以上功能都要有所体现*/
#include<iostream>
#include<math.h>//包含sqrt()的头文件
using namespace std;
class Point//定义一个point类
{
public:
Point()//缺省参数的构造函数
{
cout<<"初始化点类的一个对象!"<<endl;
x=3;
y=4;
}
~Point()//析构函数
{
cout<<"回收点类对象的内存空间!"<<endl;
}
float distance;
float Distance();//声明成员函数Distance
void show();//声明成员函数sho
private:
float x;
float y;
};
class Rectangle:public Point//定义一个Rectangle类, 公有继承
{
public:
Rectangle()//缺省参数的构造函数
{
cout<<"初始化矩形类的一个对象!"<<endl;
H=5;
W=6;
}
~Rectangle()//析构函数
{
cout<<"回收矩形类对象的内存空间!"<<endl;
}
float area;
float Area()//声明定义Area()
{
return H*W;
}
void show()
{
cout<<"H="<<H<<endl;
cout<<"W="<<W<<endl;
cout<<"矩阵的面积为:"<<area<<endl;
}
private:
float H;
float W;
};
float Point::Distance()//定义成员函数Distance
{
return sqrt(x*x+y*y);
}
void Point::show()//定义成员函数show
{
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"xy两点距离为:"<<distance<<endl;
}
int main()
{
Point P;
P.distance=P.Distance();
P.show();
Rectangle R;
R.area=R.Area();
R.show();
return 0;
}