声明并实现一个Circle类,有成员变量radius(半径)、成员函数Getarea()。(要求实现重载的构造函数、拷贝构造函数、析构函数,并在main()中测试该类)
时间: 2024-09-29 17:13:38 浏览: 39
当然可以。首先,让我们声明和实现一个名为Circle的类,它包含成员变量radius(半径),以及用于计算面积的成员函数GetArea()。我们将实现重载的构造函数、拷贝构造函数和析构函数。
```cpp
#include <iostream>
class Circle {
private:
double radius;
public:
// 构造函数 - 默认构造函数
Circle() : radius(0) {}
// 构造函数 - 参数化构造函数,接受半径作为输入
Circle(double r) : radius(r) {}
// 拷贝构造函数
Circle(const Circle& other) : radius(other.radius) {}
// 计算圆的面积
double GetArea() const {
return M_PI * radius * radius;
}
// 重载运算符=,实现浅拷贝
Circle& operator=(const Circle& other) {
if (this != &other) {
radius = other.radius;
}
return *this;
}
// 析构函数
~Circle() {}
// 测试类的main函数
friend int main() {
Circle circle1(5); // 使用参数化构造函数创建一个半径为5的circle
std::cout << "Circle1 area: " << circle1.GetArea() << std::endl;
Circle circle2(circle1); // 使用拷贝构造函数复制circle1
std::cout << "Circle2 area: " << circle2.GetArea() << std::endl;
circle1.radius = 7; // 修改circle1的半径
std::cout << "Circle2 area after circle1 radius change: " << circle2.GetArea() << std::endl;
return 0;
}
};
```
在这个例子中,`main()`函数展示了如何创建Circle对象、使用它们的GetArea方法,以及如何通过拷贝构造函数复制对象。注意,我们还实现了赋值运算符`=`,使得对象可以被浅拷贝。
阅读全文