文章目录
- 练习案例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;
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;
.
.
.
.
.