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

练习案例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;
    else
    	return 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;
  else
    return 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;
.
.
.
.
.

相关推荐

  1. C++模板文件编写

    2024-03-27 22:00:02       63 阅读
  2. 模板文件编写

    2024-03-27 22:00:02       40 阅读
  3. 模板文件编写

    2024-03-27 22:00:02       46 阅读
  4. 对象关系

    2024-03-27 22:00:02       36 阅读
  5. C++设计编程示例

    2024-03-27 22:00:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 22:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 22:00:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 22:00:02       82 阅读
  4. Python语言-面向对象

    2024-03-27 22:00:02       91 阅读

热门阅读

  1. 3.3 语法规则

    2024-03-27 22:00:02       46 阅读
  2. 【深度学习】基础知识

    2024-03-27 22:00:02       42 阅读
  3. c++day3

    c++day3

    2024-03-27 22:00:02      38 阅读
  4. 【生成对抗网络GAN】一篇文章讲透~

    2024-03-27 22:00:02       41 阅读
  5. 我与CSDN的故事(一)

    2024-03-27 22:00:02       38 阅读
  6. 第 1 章 信息化和信息系统 -2

    2024-03-27 22:00:02       44 阅读
  7. 1.7.2 python练习题15道

    2024-03-27 22:00:02       30 阅读
  8. MySQL高阶语句

    2024-03-27 22:00:02       31 阅读