当前位置: 首页 > news >正文

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.lryc.cn/news/326318.html

相关文章:

  • 大数据开发扩展shell--尚硅谷shell笔记
  • 考研数学|《1800》《1000》《880》《660》最佳搭配使用方法
  • 【GameFramework框架内置模块】17、声音(Sound)
  • 视频记录历史播放位置效果
  • Request Response
  • How to convert .py to .ipynb in Ubuntu 22.04
  • 【prometheus-operator】k8s监控集群外redis
  • MySQL索引(图文并茂)
  • Redis 教程系列之Redis PHP 使用 Redis(十二)
  • JavaScript语法和数据类型
  • 解决华为云服务器宝塔面板无法访问显示“此站点的连接不安全”问题
  • 【Python】 Python脚本实现某平台视频流下载
  • LangChain核心模块 Model I/O——Prompts
  • 关于Docker守护程序未运行导致的错误
  • Unity中关于SendMessage方法
  • C++ 修饰符类型
  • 生产计划数据模型,实现能源企业数字化高效管理
  • 【chemistry 2】蛋白质的共价结构
  • 什么是 UI ?设计师为你解答
  • pytest框架入门及环境配置
  • unity 2d范围检测:怪物检测范围
  • 外包干了10天,技术倒退明显
  • 后端常问面经之Java基础
  • I.MX6ULL_Linux_驱动篇(58)linux IIO驱动
  • 两个包装类型变量的比较问题
  • Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工程调试利器
  • js 在for循环中有setTimeout 时,不执行等待,解决方法
  • 机械硬盘与固态硬盘的区别
  • Springboot总结
  • P8623 [蓝桥杯 2015 省 B] 移动距离 Python