拷贝构造函数是一种特殊的构造函数,其形参是本类对象的引用。其构造函数的作用是,在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。
析构函数也是一种特殊的成员函数,它执行与构造函数相反的操作,通常用于执行一些清理任务,如释放分配给对象的内存对象等。
通过题目描述以及主函数我们可以简单写出类
class RECT{
public:
void set(double x1,double y1,double x2,double y2);
RECT(double a=0.0,double b=0.0,double c=0.0,double d=0.0);
~RECT();
RECT(const RECT &r);
void showinfo();
double perimeter();
double area();
void show();
private:
double x1,x2,y1,y2;
};
通过输出结果我们可以推测写出函数
void set(double x1,double y1,double x2,double y2){
this->x1=x1,this->x2=x2,this->y1=y1,this->y2=y2;
}//用于初始化成员函数
RECT(double a=0.0,double b=0.0,double c=0.0,double d=0.0){
x1=a,y1=b,x2=c,y2=d;
}//构造函数赋初值
~RECT(){
cout<<"("<<x1<<","<<y1<<","<<x2<<","<<y2<<")"<<"deconstruct"<<endl;
}//析构函数输出,并表现析构函数的作用
RECT(const RECT &r){
x1=r.x1,y1=r.y1,x2=r.x2,y2=r.y2;
}//拷贝构造函数,拷贝函数数值
其他的函数程序
void showinfo(){
cout<<"("<<x1<<","<<y1<<","<<x2<<","<<y2<<")";
}
double perimeter(){
return 2*(fabs(x2-x1)+fabs(y2-y1));
}
double area(){
return fabs(x2-x1)*fabs(y2-y1);
}
void show(){
int i=0,j=0;
for(int i=1;i<=fabs(y2-y1);i++)
{
for(int j=1;j<=fabs(x2-x1);j++)
cout << "*";
cout << endl;
}
}