【二维坐标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 <iostream>
#include <cmath>
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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武帝为此

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值