用C++编写程序。具体功能如下: (1)Shape类,其中有getArea、getPerimeter、getVolume和getName函数,具有name私有成员变量。 (2)Point类继承Shape类,包括:私有数据成员x、y,构造函数,get/set函数
时间: 2023-06-15 12:07:46 浏览: 91
以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Shape {
private:
string name;
public:
Shape(string n) {
name = n;
}
virtual double getArea() = 0;
virtual double getPerimeter() = 0;
virtual double getVolume() = 0;
string getName() {
return name;
}
};
class Point : public Shape {
private:
double x, y;
public:
Point(string n, double x_, double y_) : Shape(n) {
x = x_;
y = y_;
}
void setX(double x_) {
x = x_;
}
void setY(double y_) {
y = y_;
}
double getX() {
return x;
}
double getY() {
return y;
}
double getArea() {
return 0;
}
double getPerimeter() {
return 0;
}
double getVolume() {
return 0;
}
};
int main() {
Point p1("Point 1", 1, 2);
Point p2("Point 2", 3, 4);
cout << p1.getName() << ": (" << p1.getX() << ", " << p1.getY() << ")" << endl;
cout << p2.getName() << ": (" << p2.getX() << ", " << p2.getY() << ")" << endl;
p1.setX(5);
p1.setY(6);
cout << p1.getName() << ": (" << p1.getX() << ", " << p1.getY() << ")" << endl;
return 0;
}
```
在这个程序中,Shape类是一个抽象类,其中包含一个纯虚函数getArea、getPerimeter、getVolume和getName函数,还有一个私有成员变量name。Point类继承自Shape类,包括私有数据成员x、y和构造函数、get/set函数。在Point类中,纯虚函数getArea、getPerimeter、getVolume被实现为返回0,因为一个点没有面积、周长和体积。
在主函数中,我们可以创建两个Point对象p1和p2,并使用getX和getY函数获取它们的x和y坐标。我们还可以使用setX和setY函数更改p1的坐标,并使用getName函数获取p1和p2的名称。
阅读全文