流萤k423 2024-04-15 18:55 采纳率: 80.5%
浏览 57
已结题

定义一个二维坐标点类Point

定义一个二维坐标点类Point
数据成员(访问权限定义为protected):

横坐标、纵坐标

成员函数(访问权限定义为public):

带默认参数的构造函数:数据成员初始化

Point(double _x = 0.0, double _y = 0.0);

拷贝构造函数:数据成员初始化 Point(const Point &point);

设置横坐标

设置纵坐标

获取横坐标(定义为const成员函数)

获取纵坐标(定义为const成员函数)

打印点的坐标信息(定义为const成员函数),格式:(x, y)

要求:将类的定义与类成员函数的实现分开。

定义一个普通函数用来计算两个Point对象的距离:

double pdistance(const Point &p1, const Point &p2);

并将pdistance函数声明为类Point的友元函数,使其能够直接访问Point的保护数据成员。

定义一个普通函数用来计算两个Point对象的中点:

Point midpoint(const Point &p1, const Point &p2);

并将midpoint函数声明为类Point的友元函数,使其能够直接访问Point的保护数据成员。

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-15 18:55
    关注

    引自免费微信小程序:皆我百晓生

    // 定义Point类
    class Point {
    protected:
        double x;
        double y;
    
    public:
        // 带默认参数的构造函数
        Point(double _x = 0.0, double _y = 0.0) : x(_x), y(_y) {}
    
        // 拷贝构造函数
        Point(const Point &point) : x(point.x), y(point.y) {}
    
        // 设置横坐标
        void setX(double newX) { x = newX; }
    
        // 设置纵坐标
        void setY(double newY) { y = newY; }
    
        // 获取横坐标 (const成员函数)
        double getX() const { return x; }
    
        // 获取纵坐标 (const成员函数)
        double getY() const { return y; }
    
        // 打印点的坐标信息 (const成员函数)
        void printCoordinates() const {
            std::cout << "(" << x << ", " << y << ")" << std::endl;
        }
    };
    
    // 计算两个Point对象的距离,友元函数
    double pdistance(const Point &p1, const Point &p2) {
        double dx = p1.getX() - p2.getX();
        double dy = p1.getY() - p2.getY();
        return std::sqrt(dx * dx + dy * dy);
    }
    
    // 计算两个Point对象的中点,友元函数
    Point midpoint(const Point &p1, const Point &p2) {
        double midX = (p1.getX() + p2.getX()) / 2.0;
        double midY = (p1.getY() + p2.getY()) / 2.0;
        return Point(midX, midY);
    }
    

    这段代码定义了一个名为Point的C++类,它包含两个保护数据成员(横坐标x和纵坐标y)。类中有带默认参数的构造函数、拷贝构造函数、用于设置和获取横纵坐标的成员函数以及打印坐标信息的成员函数。此外,我们还定义了两个友元函数pdistancemidpoint,它们可以访问Point类的保护数据成员。

    要使用这个类,你可以这样创建和操作点:

    int main() {
        Point p1(3.0, 4.0);  // 创建一个点 (3, 4)
        Point p2(7.0, 9.0);  // 创建另一个点 (7, 9)
    
        p1.printCoordinates();  // 输出: (3, 4)
        p2.printCoordinates();  // 输出: (7, 9)
    
        double distance = pdistance(p1, p2);  // 计算两点之间的距离
        std::cout << "Distance between points: " << distance << std::endl;
    
        Point mid = midpoint(p1, p2);  // 计算两点的中点
        mid.printCoordinates();  // 输出中点坐标
    
        return 0;
    }
    

    这段示例代码展示了如何创建Point对象,并使用定义的成员函数和友元函数进行操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?