#include <iostream> #include <cmath> class Point { private: int x; int y; static int count; // 统计点的个数 public: Point(int x = 0, int y = 0) { this->x = x; this->y = y; count++; } int getX() const { return x; } int getY() const { return y; } void display() const { std::cout << "(" << x << ", " << y << ")" << std::endl; } static void showCount() { std::cout << "There are " << count << " points." << std::endl; } Point midpoint(int x, int y) const { Point m((this->x + x) / 2, (this->y + y) / 2); return m; } friend double distance(const Point& p); }; int Point::count = 0; double distance(const Point& p) { return sqrt(p.x * p.x + p.y * p.y); } int main() { const Point p1(1, 2); const Point p2(3, 4); p1.display(); p2.display(); Point::showCount(); std::cout << "Distance from p1 to origin: " << distance(p1) << std::endl; std::cout << "Midpoint between p1 and origin: "; p1.midpoint(0, 0).display(); std::cout << "Midpoint between p1 and p2: "; p1.midpoint(p2.getX(), p2.getY()).display(); const Point* pp = &p1; pp->display(); return 0; }

时间: 2024-03-04 08:52:34 浏览: 22
这段代码定义了一个 Point 类,表示一个二维平面上的点。其中,count 是一个静态成员变量,用于记录 Point 对象的个数;getX 和 getY 是两个访问私有成员变量 x 和 y 的公有成员函数;display 是一个输出点坐标的公有成员函数;midpoint 是一个计算当前点和传入点中点坐标的公有成员函数;distance 是一个计算点到原点距离的友元函数。 在 main 函数中,创建了两个 Point 对象 p1 和 p2,并调用其成员函数 display 输出点的坐标。然后调用 Point 的静态成员函数 showCount 输出 Point 对象的个数。接着,调用 distance 函数计算 p1 到原点的距离,并输出结果;再调用 p1 的成员函数 midpoint 计算 p1 和原点的中点坐标,并输出结果;最后,使用指向常量 Point 对象的指针 pp 指向 p1,并调用 pp 的成员函数 display 输出点的坐标。
相关问题

#include <iostream>#include <cmath>using namespace std;class Point {private: int x; int y; static int count; // 统计点的个数public: Point(int x = 0, int y = 0) { this->x = x; this->y = y; count++; } int getX() { return x; } int getY() { return y; } void display() { cout << "x: " << x << ", y: " << y << endl; } Point midpoint(int x, int y) const { int midX = (this->x + x) / 2; int midY = (this->y + y) / 2; return Point(midX, midY); } static void showCount() { cout << "The count of points is: " << count << endl; } friend double distance(Point p); // 求出点到原点的距离};int Point::count = 0;double distance(Point p) { return sqrt(pow(p.x, 2) + pow(p.y, 2));}int main() { Point p1(1, 2); Point p2(3, 4); Point::showCount(); // 输出点的个数 p1.display(); // 输出点的坐标 p2.display(); cout << "The distance between p1 and origin is: " << distance(p1) << endl; // 输出点到原点的距离 Point mid = p1.midpoint(3, 4); // 计算点与原点之间的中点 mid.display(); const Point* p = &p2; // 常指针 p->getX(); // 用常指针调用getX函数 p->getY(); // 用常指针调用getY函数 p->midpoint(5, 6); // 用常指针调用midpoint函数,因为midpoint函数是常函数,所以可以用常指针调用 //p->display(); // 错误,display函数不是常函数,不能用常指针调用 return 0;}结果说明

以上代码是一个简单的面向对象程序,定义了一个Point类,表示一个二维平面上的点,并实现了一些基本的点操作,包括输出点的坐标、计算点之间的中点、计算点到原点的距离等。同时,还定义了一个静态成员变量count,用于统计点的个数,以及一个友元函数distance,用于求出点到原点的距离。 在main函数中,通过创建Point对象,调用类的成员函数以及静态成员函数,展示了Point类的基本使用方法。同时,还通过常指针演示了如何使用常函数以及不能使用常指针调用非常函数的情况。程序最后输出了点的个数、点的坐标、点到原点的距离以及点与原点之间的中点坐标。

一、实验目的:通过类的设计与实现,将所学知识点综合应用。 1.类的设计与定义,构造函数等。 2.静态成员,友元,常引用等 二、实验要求: 1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用 测试该类,运行成功。 点类Point的设计图如下: Point int x; int y; static int count=0; //统计点的个数 Point(int x =0,int y=0); int getX(); //得到x int getY(); //得到y void display(); //输出x,y Point midpoint(int x,int y) const;//两点举例 static void showCount(); //输出个数 friend double distance();//求出点到原点的距离

好的,这是您需要的代码: ```c++ #include <iostream> #include <cmath> class Point { private: int x; int y; static int count; // 统计点的个数 public: Point(int x = 0, int y = 0) { this->x = x; this->y = y; count++; } int getX() const { return x; } int getY() const { return y; } void display() const { std::cout << "(" << x << ", " << y << ")" << std::endl; } static void showCount() { std::cout << "There are " << count << " points." << std::endl; } Point midpoint(int x, int y) const { Point m((this->x + x) / 2, (this->y + y) / 2); return m; } friend double distance(const Point& p); }; int Point::count = 0; double distance(const Point& p) { return sqrt(p.x * p.x + p.y * p.y); } int main() { const Point p1(1, 2); const Point p2(3, 4); p1.display(); p2.display(); Point::showCount(); std::cout << "Distance from p1 to origin: " << distance(p1) << std::endl; std::cout << "Midpoint between p1 and origin: "; p1.midpoint(0, 0).display(); std::cout << "Midpoint between p1 and p2: "; p1.midpoint(p2.getX(), p2.getY()).display(); const Point* pp = &p1; pp->display(); return 0; } ``` 输出如下: ``` (1, 2) (3, 4) There are 2 points. Distance from p1 to origin: 2.23607 Midpoint between p1 and origin: (0, 1) Midpoint between p1 and p2: (2, 3) (1, 2) ```

相关推荐

最新推荐

recommend-type

分布式锁与信号量:同步机制的探讨与实践.pdf

在分布式系统中,同步机制是确保多个进程或线程协调工作、避免数据竞争和死锁等问题的关键技术。分布式锁和信号量作为两种常见的同步机制,在许多分布式应用场景中发挥着重要作用。本文将深入探讨分布式锁与信号量的原理、特点、应用场景以及它们之间的异同点,并通过实际案例分析它们在分布式系统中的应用效果。 分布式锁是一种允许多个进程或线程在分布式环境中对共享资源进行互斥访问的同步机制。它的工作原理基于分布式协调服务,如ZooKeeper、Redis等,这些服务提供了一致性的数据存储和同步机制。分布式锁的主要特点包括:
recommend-type

ASP.NET基于WEB的工作计划流程管理系统的设计与实现(源代码+论文)【ASP】.zip

ASP.NET基于WEB的工作计划流程管理系统的设计与实现(源代码+论文)【ASP】
recommend-type

cryptography-3.4-cp36-abi3-macosx_10_10_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

基于Java的吉首大学假期留校工作系统(源码+论文+需求分析+数据库文件+演示视频).zip

本基于Web技术的B/S结构的系统采用jsp技术进行开发设计,开发环境是MyEclipse,服务器采用tomcat,通过jdbc驱动和数据库进行无缝连接,具有较高的完整性,一致性和安全性。 学生:登录之后,申请留校查看自己的申请记录 修改个人信息 辅导员:审核 查看申请记录 修改个人信息 院级管理员:审核辅导员通过得记录 查看申请记录 修改个人信息宿舍管理员:对审核通过的给予宿舍住宿登记,查看住宿登记记录
recommend-type

html bootstrap前端样式代码大全

html bootstrap前端样式代码大全
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。