使用C++,和using namespace std,声明并实现一个Circle类,有成员变量radius(半径)、成员函数Getarea()。(要求实现重载的构造函数、拷贝构造函数、析构函数,并在main()中测试该类)
时间: 2024-09-29 21:13:54 浏览: 45
CircleTest_java_设计一个circle_点类_圆类_
5星 · 资源好评率100%
在C++中,为了声明和实现一个Circle类,我们可以按照以下步骤进行:
首先,我们需要在`Circle.h`文件中定义Circle类,并包含必要的命名空间std:
```cpp
// Circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
#include <iostream>
#include <cmath>
class Circle {
public:
// 定义成员变量 radius 和构造函数
double radius;
Circle(double r = 0); // 默认构造函数
// 重载构造函数:接受半径作为参数
explicit Circle(double r);
// 拷贝构造函数
Circle(const Circle& other);
// 获取面积的成员函数 GetArea()
double GetArea() const;
// 析构函数
~Circle();
private:
// 防止直接修改半径
void setRadius(double new_radius) { radius = new_radius; }
};
#endif // CIRCLE_H
```
然后,在`Circle.cpp`文件中实现这些函数:
```cpp
// Circle.cpp
#include "Circle.h"
// 实现默认构造函数
Circle::Circle(double r) : radius(r) {}
// 实现接受半径的构造函数
explicit Circle::Circle(double r) : radius(r) {}
// 实现拷贝构造函数
Circle::Circle(const Circle& other) : radius(other.radius) {
// 如果需要,可以复制其他数据成员
}
// 计算并返回圆的面积
double Circle::GetArea() const {
return M_PI * radius * radius;
}
// 析构函数无操作,这里为空
Circle::~Circle() {}
int main() {
// 创建Circle实例并测试GetArea()方法
Circle circle1(5.0);
double area1 = circle1.GetArea();
std::cout << "Circle 1 area: " << area1 << std::endl;
Circle circle2(circle1); // 测试拷贝构造函数
double area2 = circle2.GetArea();
std::cout << "Circle 2 area (copy): " << area2 << std::endl;
return 0;
}
```
在这个例子中,我们创建了一个Circle类,它有一个double类型的radius成员变量以及用于获取面积的GetArea()函数。还实现了构造函数(包括默认构造和带参数的构造)、拷贝构造函数和析构函数。
在main()函数中,我们创建了两个Circle实例并计算它们的面积,展示了如何通过构造函数和拷贝构造函数创建和传递Circle对象。
阅读全文