C++|类封装、类的分文件编写练习:设计立方体类、点和圆的关系

文章目录

  • 练习案例1:设计立方体类
    • CPP代码
  • 练习案例2:点和圆的关系
    • CPP代码
  • 代码总结
    • 类的分文件编写

练习案例1:设计立方体类

设计立方体类(Cube)

求出立方体的面积和体积

分别用全局函数和成员函数判断两个立方体是否相等。

在这里插入图片描述

CPP代码

class Cube
{
public://设置获取和修改长宽高的接口函数void setL(int l)	m_L = l;int getL()	return m_L;void setW(int w)	m_W = w;int getW()	return m_W;void setH(int h)	m_H = h;int getH()	return m_H;//获取面积int area()	return 2 * (m_L * m_L + m_W * m_W + m_H * m_H)//获取体积int cal()	return m_L * m_H * m_W;//利用成员函数判断两个立方体是否相等bool isEmptyClass(Cube &c)	//参数只有一个,因为我们肯定使用已知的对象调用成员函数{if (m_L == c.getL() && m_W == c.getW() && m_H.getH() == c.getH())return true;elsereturn false;}
private:int m_L;	int m_W;int m_H
};//利用全局函数判断两个立方体是否相等
//bool isEqual(Cube c1, Cube c2)	//采用值传递会拷贝数据,但是安全,因为形参不能操作实参
bool isEqual(Cube &c1, Cube &c2)	//采用引用传递不会拷贝数据,节省空间但是不安全,其实如果我们不想改变实参的值,建议不要用引用。
{if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH())return true;elsereturn false;
}

练习案例2:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系(点相对于圆的位置)。

在这里插入图片描述

具体关系例子如下:

在这里插入图片描述

点分别在圆外、圆上、圆内。

三个点只要和圆半径相比较就能得出点相对于圆的位置。

CPP代码

class point
{
public://设置和获取XY坐标void setX(int x)	m_X = x;void setY(int y)	m_Y = y;int getX()	return m_X;int getY()	return m_Y;
private:  int m_X;int m_Y;
};class Circle
{
public://设置和获取半径和圆心void setR(int r)	m_R = r;int getR()	return m_R;void setCenter(Point center)	m_Center = center;Point getCenter()	return m_Center;
private:int m_R;point m_Center; //圆心位置
};//判断点和圆的关系:写成全局函数
void isInCircle(Circle &c, Point &p)
{//计算两点距离平方int distance = (c.getCenter.getX() - p.getX()) * (c.getCenter.getX() - p.getX()) +(c.getCenter.getY() - p.getY()) * (c.getCenter.getY() - p.getY())//计算半径的平方int rDistance = c.getR() * c.getR();///判断关系if (distance == rDistance)cout << "点在圆上" << endl;else if (distance > rDistance)cout << "点在圆外" << endl;else (distance < rDistance)cout << "点在圆内" << endl;}

代码总结

  • 在一个类中,可以让另外一个类作为其成员
  • 头文件和源文件的分文件形式:

类的分文件编写

a.h文件中,只留下成员函数的所有声明与其成员属性的声明,如果其中包含了其他头文件的内容,记得引用头文件

#inlcude "point.h"
class Circle
{
public://设置和获取半径和圆心void setR(int r);int getR();void setCenter(Point center);Point getCenter();
private:int m_R;point m_Center; //圆心位置
};

a.cpp文件中,对成员函数进行实现

#include "a.h"
void Circle::setR(int r)	m_R = r;
.
.
.
.
.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙(HarmonyOS)Navigation如何实现多场景UI适配?

场景介绍 应用在不同屏幕大小的设备上运行时&#xff0c;往往有不同的UI适配&#xff0c;以聊天应用举例&#xff1a; 在窄屏设备上&#xff0c;联系人和聊天区在多窗口中体现。在宽屏设备上&#xff0c;联系人和聊天区在同一窗口体现。 要做好适配&#xff0c;往往需要开发…

鸿蒙HarmonyOS应用开发之C/C++标准库机制概述

OpenHarmony NDK提供业界标准库 libc标准库、 C标准库 &#xff0c;本文用于介绍C/C标准库在OpenHarmony中的机制&#xff0c;开发者了解这些机制有助于在NDK开发过程中避免相关问题。 1. C兼容性 在OpenHarmony系统中&#xff0c;系统库与应用Native库都在使用C标准库&#…

集成学习 | 集成学习思想:Stacking思想

目录 一. Stacking 思想 一. Stacking 思想 Stacking(或stacked generalization)&#xff0c;是指训练一个模型用于组合(combine)其他各个模型 Stacking有两层第一层是不同的基学习器&#xff08;classifiers/regressors&#xff09;第二层是用于组合基学习器的元学习&#xf…

mysql如何存Emoji表情

如何存Emoji表情 背景解决方案一&#xff1a; 如果是自己搭建的数据库&#xff0c;参考如下。 1&#xff1a;先创建数据库&#xff0c;utf8编码2&#xff1a; 修改mysql 的配置文件 /etc/my.cnf 文件3&#xff1a;然后把你的表和字段也要支持utf8md4编码4&#xff1a;修改你连…

鸿蒙开发-UI-交互事件-手势事件

鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 鸿蒙开发-UI-图形-弹簧曲线动画 鸿蒙开发-UI-交互事件-通用事件 鸿蒙开发-UI-交互事件-键鼠事件 鸿蒙开发-UI-交互事件-焦点事件 文章目录 前言 一、绑定手势方法 1. gesture …

智能算法-遗传算法 学习笔记

适应度的计算可类别为神经网络的目标函数&#xff0c;但此算法属于无监督学习&#xff0c;宏观来讲为搜寻最优解&#xff08;梯度&#xff09;的方式不同&#xff1f; 但神经网络中好像并不存在变异操作&#xff08;参数矩阵突变&#xff09;&#xff1f; 交叉的话残差网络ResN…

竞赛 python+opencv+机器学习车牌识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器学习的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&#xff0c;适…

为什么上级总能提出问题和风险

首先要搞清楚什么是风险&#xff0c;风险就是目标与实际的GAP&#xff0c;所谓能发现风险就是对目标的理解更深入&#xff0c;对目标的实现具有更高要求&#xff0c;GAP越大能发现的风险越多 &#x1f4a1;目标不同&#xff1a; 1.高层领导关注长期指标&#xff0c;比如他会看…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么&#xff1f;1.2TCP/IP四层模型是什么&#xff1f;每一层的作用&#xff1f;1.2.1TCP四层模型&#xff1f;1.2.2为什么网络要分层&#xff1f; 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

OSCP靶场--Extplorer

OSCP靶场–Extplorer 考点(信息收集linux磁盘组用户提权) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.194.16 -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-26 20:21 EDT Nmap scan report for 19…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器&#xff0c;可以提高 cs…

第一个JDBC程序

一、JDBC的概念&#xff1a; JDBC 是 Java DataBase Connectivity (Java 数据连接)技术的简称&#xff0c;是一种可用于执行 SQL 语句的 Java API。它由一些 java 语言编写的类和接口组成&#xff1b;程序员通过使用 jdbc 可以方便地将 SQL 语句传送给几乎任何一种数据库。 二…