如何实现C++中类编写的头文件和源文件的拆分
以实现点和圆位置关系的判断为例
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++中类编写的头文件和源文件的拆分相关推荐
- C++ 头文件和源文件
from:https://www.cnblogs.com/fenghuan/p/4794514.html C++中头文件(.h)和源文件(.cpp)都应该写些什么 头文件(.h): 写类的声明(包括类 ...
- C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用
1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...
- C++头文件和源文件,编译过程
源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...
- C++头文件和源文件的编译过程
源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来,编 ...
- C++里面头文件和源文件都要怎么编写以及运行
** 作为一个资深菜鸟,最近在看那本c++primer时对前面的书店程序难免有点兴趣,便打开vs2017想用宇宙第一IDE装下b,结果是一大堆问题,搞得我不知所措. 首先打开vs,创建新项目时,就之前 ...
- C语言头文件和源文件差异,#include两种引用方式差异
一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的.只知道调用系统库函数时,要使用#include语句将某些头文件包含进去.其实,头文件跟.c文件一样,是可以自己写的.头文件是一种文本文 ...
- 什么是c 语言中源文件,C++中头文件和源文件详细介绍
C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称 ...
- C语言中头文件和源文件的注意事项
C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...
- ROS中的头文件和源文件
目录 自定义头文件的调用 头文件 可执行文件 配置文件 自定义源文件的调用 头文件 源文件 可执行文件 配置文件 头文件与源文件相关配置: 可执行文件配置: 本文主要介绍ROS的C++实现,如何使用头 ...
- C++中的头文件和源文件:如何写头文件
C++中的头文件和源文件 转自:博客园http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html 一.C++编译模式 通常,在一个C++ ...
最新文章
- bugku ctf 杂项 啊哒 writeup || foremost的安装
- 主题简介 ASP .NET
- win系统注册缺少的库 32位系统 64位系统
- android and javascript
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
- VS Code 关于SFTP上传文件到多服务器的配置
- 11年写的一篇文章----智能终端安全现状及前景展望
- cloudare mysql 密码修改_CentOS7.3 LAMP环境搭建私有云NextCloud过程记录
- Scheme语言学习---求解三个数中其中两个较大数的和
- MATLAB-APP编程
- python3和5_Python3算法之五:最大子序和
- esd win10 /win8 最简单快速的安装方法 双系统、vhd、wimboot+VHD
- android指南针校准 代码_Android指南针app的实现原理总结
- 我的世界java版怎么找史莱姆区块_我的世界史莱姆在哪里
- docker.11-基于Docker容器DevOps应用方案 企业业务代码发布系统
- 苹果怎么找计算机历史记录,如何在苹果电脑上恢复已删除的上网历史记录
- CSDN做测试的老师教你Jmeter生成压力测试报告
- Fiddler使用 抓取手机数据包及中文乱码解决方案
- 快速有效地封杀—巧利用Iris来查找蠕虫病毒(转)
- 给Python漫画分集标题目录下载工具添加从列表文件下载功能