【二维坐标Point类派生三维空间坐标点类Point3D】

【问题描述】设计一个名为Point的类,表示平面坐标下的一个点,这个类包括:

    (1)两个double 型数据成员:x, y,分别表示横坐标和纵坐标

    (2)一个不带形参的构造函数,用于创建原点:(0,0)

    (3)一个带形参的构造函数:Point(double x, double y)

    (4)成员函数getx(),返回横坐标

    (5)成员函数gety(),返回纵坐标

    (6)成员函数dist(constPoint& p),返回当前点与给定点的距离

        然后在Point 类的基础上定义派生类Point3D,表示三维空间的一个点,包括:

    (1)一个double 型数据成员:z,表示z-坐标

    (2)一个不带形参的构造函数,用于创建原点:(0,0,0)

    (3)一个带形参的构造函数:Point3D(double x, double y, double z)

    (4)成员函数getz(),返回z-坐标

    (5)成员函数dist(constPoint3D& p),返回当前点与给定点的距离

        实现这个类,并在主函数中测试这个类:创建三维空间坐标点A(0,0,0)和B(4,5.6,7.8),并输出它们之间的距离。

【输入形式】无
【输出形式】三维空间坐标点A和B的距离。

【样例输入】无
【样例输出】|A-B|=10.4019

代码如下:

#include 
#include 
using namespace std;

class Point {
public:
    Point() { x = 0; y = 0; }  // 默认构造函数
    Point(double a, double b) { x = a; y = b; }  // 自定义构造函数
    double getx() const { return x; }
    double gety() const { return y; }
    double dist(const Point& p) const {
        double dx = x - p.x;
        double dy = y - p.y;
        return sqrt(dx*dx + dy*dy);
    }
private:
    double x;
    double y;
};

class Point3D : public Point {
public:
    Point3D() : Point() { z = 0; }  
    Point3D(double a, double b, double c) : Point(a, b) { z = c; }  
    double getz() const { return z; }
    double dist(const Point3D& p) const {
        double dx = getx() - p.getx();
        double dy = gety() - p.gety();
        double dz = z - p.z;
        return sqrt(dx*dx + dy*dy + dz*dz);
    }
private:
    double z;
};

int main() {
    Point3D A(0, 0, 0);
    Point3D B(4, 5.6, 7.8);
    double dist = A.dist(B);
    cout << "|A-B|=" << dist << endl;
    return 0;
}

你可能感兴趣的:(重交cg,c++)