以实现点和圆位置关系的判断为例
https://www.bilibili.com/video/av41559729?p=105
1. 在头文件中创建.h文件,在源文件中创建.cpp文件
2. 在.h文件中写入
#pragma once
#include<iostream>
using namespace std;
将类复制于.h文件中,删除所有函数的操作,只保留函数声明,并加上分号。
(永远记住头文件只保留函数的声明)
Point.h
#pragma once // 放置头文件重复包含
#include<iostream>
using namespace std;
// 点类
class Point
{
public:
// 设置x坐标
void setX(int x);
// 获取x坐标
int getX();
// 设置y坐标
void setY(int y);
// 获取y坐标
int getY();
private:
int m_X;
int m_Y;
};
3.在.cpp中导入刚刚的.h文件
#include "point.h"
然后再把类的代码复制进来,仅仅保留函数的操作,并shift+TAB
point.cpp
#include "point.h"
// 设置x坐标
void Point::setX(int x)
{
m_X = x;
}
// 获取x坐标
int Point::getX()
{
return m_X;
}
// 设置y坐标
void Point::setY(int y)
{
m_Y = y;
}
// 获取y坐标
int Point::getY()
{
return m_Y;
}
4.制作另一个类的文件拆分
circle.h
#pragma once
#include<iostream>
using namespace std;
#include "point.h"
// 圆类
class Circle
{
public:
// 设置半径
void setR(int r);
// 获取半径
int getR();
// 设置圆心
void setCenter(Point center);
// 获取圆心
Point getCenter();
private:
int m_R;
int m_X;
Point m_Center; // 让另一个类成为本类的成员
};
因为里面用到类Point,所以必须声明
#include "point.h"
之后是
circle.cpp
#include "circle.h"
#include "point.h"
// 设置半径
void Circle::setR(int r)
{
m_R = r;
}
// 获取半径
int Circle::getR()
{
return m_R;
}
// 设置圆心
void Circle::setCenter(Point center)
{
m_Center = center;
}
// 获取圆心
Point Circle::getCenter()
{
return m_Center;
}
5. 在主文件中声明后调用:
#include<iostream>
using namespace std;
#include "circle.h"
#include "point.h"
// 点和圆的关系
点类
//class Point
//{
//public:
// // 设置x坐标
// void setX(int x)
// {
// m_X = x;
// }
//
// // 获取x坐标
// int getX()
// {
// return m_X;
// }
//
// // 设置y坐标
// void setY(int y)
// {
// m_Y = y;
// }
//
// // 获取y坐标
// 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;
// int m_X;
// Point m_Center; // 让另一个类成为本类的成员
//};
// 判断点和圆的关系的函数
void isinCircle(Circle &c, Point &p)
{
// 计算两点之间距离的平方
int d1 = pow(c.getCenter().getX()-p.getX(), 2) + pow(c.getCenter().getY()-p.getY(), 2);
// 计算半径的平方
int d2 = pow(c.getR(), 2);
// 判断关系
if (d1 == d2)
{
cout << "点在圆上" << endl;
}
else if (d1 > d2)
{
cout << "点在圆外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
int main() //注意一个项目中main函数不能重名
{
// 创建圆
Circle c;
c.setR(10);
Point center;
center.setX(10);
center.setY(0);
c.setCenter(center);
// 创建点
Point p;
p.setX(10);
p.setY(101);
// 判断关系
isinCircle(c, p);
system("pause");
return 0;
}```