(2)设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量设计相应成员函数,实现下列功能:
① 构造函数设置长和宽(默认为1)。
② set()函数设置长和宽(默认为0)。
③计算并返回长方形的周长。
④ 计算并返回长方形的面积。
⑤ 析构函数释放动态分配的长和宽。
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#include <iostream>
//设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能:
//① 构造函数设置长和宽(默认为1)。
//② set()函数设置长和宽(默认为0)。
//③计算并返回长方形的周长。
//④ 计算并返回长方形的面积。
//⑤ 析构函数释放动态分配的长和宽。
class Rect{
private://私有成员
float *Length,*Width;
public://公共成员
Rect(float a=1,float b=1);//构造函数
Rect(Rect &);//构造函数
void set(float a=0,float b=0);
float peri();
float area();
~Rect()//⑤ 析构函数释放动态分配的长和宽。
{
delete Length;
delete Width;}
};
Rect::Rect(float a,float b)//① 构造函数设置长和宽(默认为1)。
{
Length = new float(a);
Width = new float(b);
}
Rect::Rect(Rect &p)//① 构造函数设置长和宽(默认为1)。
{Width = new float(*p.Width);
Length = new float(*p.Length);
}
void Rect::set(float a,float b)//② set()函数设置长和宽(默认为0)。
{
*Width = b;
*Length = a;
}
float Rect::peri()//③计算并返回长方形的周长。
{
return 2*(*Width)+2*(*Length);
}
float Rect::area()//④ 计算并返回长方形的面积。
{
return (*Width)*(*Length);
}
void main()
{
Rect r1;
r1.set(20,30);//方法一调用成员函数
cout<<"周长为:"<<r1.peri()<<" 面积为: "<<r1.area()<<endl;
cout<<"----------------------------------------------------\n";
Rect *p=new Rect(r1);//方法二调用成员函数
p->set(10,20);
cout<<"周长为:"<<p->peri()<<" 面积为: "<<p->area()<<endl;
}