(2) 设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能: ① 构造函数设置长和宽(默认为1)。 ② 复制构造函数用老对象生成新对象。 ③ set()函数设置长和宽(默认为0)。 ④ 计算并返回长方形的周长。 ⑤ 计算并返回长方形的面积。 ⑥ 析构函数释放动态分配的长和宽。 编制主程序应用指针建立对象测试类。(c++
时间: 2024-03-23 19:36:56 浏览: 95
下面是设计的Rect类的代码:
```c++
#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`关键字释放动态分配的内存。
阅读全文