以实现点和圆位置关系的判断为例

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;}```

如何实现C++中类编写的头文件和源文件的拆分相关推荐

  1. C++ 头文件和源文件

    from:https://www.cnblogs.com/fenghuan/p/4794514.html C++中头文件(.h)和源文件(.cpp)都应该写些什么 头文件(.h): 写类的声明(包括类 ...

  2. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  3. C++头文件和源文件,编译过程

    源文件如何根据#include来关联头文件  1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...

  4. C++头文件和源文件的编译过程

    源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...

  5. C++里面头文件和源文件都要怎么编写以及运行

    ** 作为一个资深菜鸟,最近在看那本c++primer时对前面的书店程序难免有点兴趣,便打开vs2017想用宇宙第一IDE装下b,结果是一大堆问题,搞得我不知所措. 首先打开vs,创建新项目时,就之前 ...

  6. C语言头文件和源文件差异,#include两种引用方式差异

    一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的.只知道调用系统库函数时,要使用#include语句将某些头文件包含进去.其实,头文件跟.c文件一样,是可以自己写的.头文件是一种文本文 ...

  7. 什么是c 语言中源文件,C++中头文件和源文件详细介绍

    C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称 ...

  8. C语言中头文件和源文件的注意事项

    C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...

  9. ROS中的头文件和源文件

    目录 自定义头文件的调用 头文件 可执行文件 配置文件 自定义源文件的调用 头文件 源文件 可执行文件 配置文件 头文件与源文件相关配置: 可执行文件配置: 本文主要介绍ROS的C++实现,如何使用头 ...

  10. C++中的头文件和源文件:如何写头文件

    C++中的头文件和源文件 转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一.C++编译模式 通常,在一个C++ ...

最新文章

  1. bugku ctf 杂项 啊哒 writeup || foremost的安装
  2. 主题简介 ASP .NET
  3. win系统注册缺少的库 32位系统 64位系统
  4. android and javascript
  5. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
  6. VS Code 关于SFTP上传文件到多服务器的配置
  7. 11年写的一篇文章----智能终端安全现状及前景展望
  8. cloudare mysql 密码修改_CentOS7.3 LAMP环境搭建私有云NextCloud过程记录
  9. Scheme语言学习---求解三个数中其中两个较大数的和
  10. MATLAB-APP编程
  11. python3和5_Python3算法之五:最大子序和
  12. esd win10 /win8 最简单快速的安装方法 双系统、vhd、wimboot+VHD
  13. android指南针校准 代码_Android指南针app的实现原理总结
  14. 我的世界java版怎么找史莱姆区块_我的世界史莱姆在哪里
  15. docker.11-基于Docker容器DevOps应用方案 企业业务代码发布系统
  16. 苹果怎么找计算机历史记录,如何在苹果电脑上恢复已删除的上网历史记录
  17. CSDN做测试的老师教你Jmeter生成压力测试报告
  18. Fiddler使用 抓取手机数据包及中文乱码解决方案
  19. 快速有效地封杀—巧利用Iris来查找蠕虫病毒(转)
  20. 给Python漫画分集标题目录下载工具添加从列表文件下载功能

热门文章

  1. android4.2 中文翻译
  2. 找出非节假日与周末的日期
  3. 纯CSS实现背景渐变、球和阶梯的跳动
  4. 运算放大电路的线性应用(1)
  5. 如何下载钉钉直播回放
  6. 计算机组装前的主意事项有,组装电脑前的准备与注意事项
  7. 打工人调休的痛谁懂?让播妞来安慰你!(文末0元送书)
  8. html盒子圆角属性,CSS盒子模型-圆角边框
  9. 小马智行元气大伤,独立自动驾驶公司路在何方?
  10. 【图论】【LCA】NOIP2015运输计划