Shape类,其中有getArea、getPerimeter、getVolume和getName函数。Point类继承Shape类,包括:私有数据成员x、y,构造函数,get/set函数和show函数,还有一个计算与其他点之间距离的函数double distance(const Point &p)。Circle类继承Point类,包括:私有数据成员radius,构造函数,get/set函数和show函数,隐藏了基类的getArea、getPerimeter、getName函数。Cylinder类继承Circle类,包括:私有数据成员height,构造函数,get/set函数和show函数,隐藏了基类的getArea、getVolume和getName函数。Triangle类继承Shape类,包括:私有成员对象point1、point2和point3,构造函数和show函数,隐藏了基类的getArea、getPerimeter、getName函数。在main函数中测试Point、Circle、Cylinder和Triangle类。【主程序】//main.cpp #include<iostream>#include<string>usingnamespace std; #include"point.h"#include"circle.h"#include"cylinder.h"#include"triangle.h"int main() { Point point(7, 11); Circle circle(22, 8, 3.5); Cylinder cylinder(10, 10, 3.3, 10); Point p1(1,1), p2(5,1), p3(1,4);Triangle triangle(p1, p2, p3); cout << point.getName() <<":" ;point.show();cout <<"Area = "<< point.getArea(); cout <<" Perimeter = "<< point.getPerimeter(); cout <<" Volume = "<< point.getVolume() << endl<<endl; cout << circle.getName() <<":" ; circle.sho
时间: 2023-06-03 09:02:09 浏览: 75
Shape类是一个基类,其中包含了一些虚函数,包括getArea、getPerimeter、getVolume和getName函数,这些函数在子类中可以被重写。Point类继承了Shape类,它包括了私有数据成员x、y,构造函数,get/set函数和show函数。此外,它还有一个计算与其他点之间距离的函数double distance(const Point &p),这个函数可以计算两个点之间的欧几里得距离。通过继承Shape类,Point类可以在计算距离的同时,自动继承一些基本的形状函数,比如计算面积和周长等。
相关问题
用c++写一个shape类,其中有getArea、getPerimeter、getVolume和getName函数。
好的,你的问题是关于一个shape类的编写。以下是代码:
```c
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
virtual double getPerimeter() = 0;
virtual double getVolume() = 0;
virtual string getName() = 0;
};
class Square : public Shape {
private:
double side;
public:
Square(double side) : side(side) {}
double getArea() { return side * side; }
double getPerimeter() { return 4 * side; }
double getVolume() { return 0; }
string getName() { return "Square"; }
};
class Cube : public Shape {
private:
double side;
public:
Cube(double side) : side(side) {}
double getArea() { return 6 * side * side; }
double getPerimeter() { return 12 * side; }
double getVolume() { return side * side * side; }
string getName() { return "Cube"; }
};
int main() {
Square square(5);
cout << square.getName() << " has area: " << square.getArea() << ", perimeter: " << square.getPerimeter() << ", volume: " << square.getVolume() << "." << endl;
Cube cube(3);
cout << cube.getName() << " has area: " << cube.getArea() << ", perimeter: " << cube.getPerimeter() << ", volume: " << cube.getVolume() << "." << endl;
return 0;
}
```
这个shape类定义了抽象基类Shape,其中包含了四个虚函数:getArea、getPerimeter、getVolume和getName。我们可以派生Square和Cube类来实现这些函数并且提供它们自己的展示名称。
当然,这只是一个非常简单的示例类,你可以根据你的需求,任意扩展与修改。
用C++编写程序。具体功能如下: (1)Shape类,其中有getArea、getPerimeter、getVolume和getName函数,具有name私有成员变量。 (2)Point类继承Shape类,包括:私有数据成员x、y,构造函数,get/set函数
以下是代码实现:
```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的名称。