(2) 设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能: ① 构造函数设置长和宽(默认为1)。 ② 复制构造函数用老对象生成新对象。 ③ set()函数设置长和宽(默认为0)。 ④ 计算并返回长方形的周长。 ⑤ 计算并返回长方形的面积。 ⑥ 析构函数释放动态分配的长和宽。 编制主程序应用指针建立对象测试类。(c++
时间: 2024-03-23 15:36:56 浏览: 106
下面是设计的Rect类的代码:
#include <iostream>
using namespace std;
class Rect {
private:
float * Length;
float * Width;
public:
Rect(float len = 1, float wid = 1);
Rect(const Rect &rect);
void set(float len = 0, float wid = 0);
float perimeter() const;
float area() const;
~Rect();
};
Rect::Rect(float len, float wid) {
Length = new float;
Width = new float;
*Length = len;
*Width = wid;
}
Rect::Rect(const Rect &rect) {
Length = new float;
Width = new float;
*Length = *(rect.Length);
*Width = *(rect.Width);
}
void Rect::set(float len, float wid) {
*Length = len;
*Width = wid;
}
float Rect::perimeter() const {
return 2 * (*Length + *Width);
}
float Rect::area() const {
return (*Length) * (*Width);
}
Rect::~Rect() {
delete Length;
delete Width;
}
int main() {
Rect *r1 = new Rect;
Rect *r2 = new Rect(*r1);
r2->set(3, 4);
cout << "Perimeter of r1: " << r1->perimeter() << endl;
cout << "Area of r1: " << r1->area() << endl;
cout << "Perimeter of r2: " << r2->perimeter() << endl;
cout << "Area of r2: " << r2->area() << endl;
delete r1;
delete r2;
return 0;
}
在主函数中,我们首先使用new
关键字创建了两个Rect
对象r1
和r2
,其中r1
使用默认构造函数,r2
使用复制构造函数从r1
生成。然后我们调用set
函数设置r2
的长和宽为3和4。最后输出r1
和r2
的周长和面积,并使用delete
关键字释放动态分配的内存。
相关推荐












