最近在学习的过程中发现这个问题,因为是学习所以内容对网上的内容有很多参考

在一个C++程序中,只包含两类文件——.cpp文件和.h文件。

一。初步了解

1.头文件的作用:  方便函数的统一的声明

2.头文件也是C++源代码,但不用编译,当.cpp文件需要时通过宏命令 “#include”包含进这个.cpp文件中

3.头文件的写法

#ifndef CIRCLE_H
#define CIRCLE_H //保护措施//你的代码写在这里#endif

eg.

在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下:

#ifndef CIRCLE_H
#define CIRCLE_Hclass Circle
{
private:double r;//半径
public:Circle();//构造函数Circle(double R);//构造函数double Area();//求面积函数
};#endif

要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下:

#include "Circle.h"Circle::Circle()
{this->r=5.0;
}Circle::Circle(double R)
{this->r=R;
}double Circle:: Area()
{return 3.14*r*r;
}

最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下:

#include <iostream>
#include "Circle.h"
using namespace std;int main()
{Circle c(3);cout<<"Area="<<c.Area()<<endl;return 1;
}

二。那么头文件中到底可以写些什么呢

1.放变量和函数的声明.

2.类 (class)的定义,其中包含着数据成员和函数成员.

3..const对象的定义.

补充:const型即常对象,在任何情况下值都不改变。

4.static对象的定义.

三。C++编译模式

C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。比如,在文件a.cpp中定义 了一个全局函数“void a() {}”,而在文件b.cpp中需要调用这个函数。

问题:如何跨文件调用函数

1.定义头文件并include一下头文件

// file foo.h
# ifndef _FOO_H_
# define _FOO_H_extern void sayHello();# endif // _FOO_H_

// file foo.cpp
# include "foo.h"
# include <iostream>using namespace std;void sayHello()
{// say your hello
}

// file main.cpp
# include "foo.h"int main()
{sayHello();return 0;
}

其中函数需要定义为extern类型, 告诉编译器这个是外部的,要到其它文件去找。

eg.

//file1.cppextern int a,b;int main(){cout<<a<<","<<b<<endl;return 0;    }
//file2.cppint a=3,int b=4;

此时file中的a,b被赋值,extern用作变量声明,并不是定义。

2.也可以直接#include "hello.cpp"  //听说不够专业

个人学习之C++ 头文件.h与.cpp相关推荐

  1. 第五十七篇:VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类

    之前没有用VS或者在vs中一个源程序写到底,没有使用C++编一个工程 打开VS2015 ,新建VS win32工程,前面步骤很简单,不再阐述 下面直接开始: 新建一个VC++ win32的程序, 在源 ...

  2. extern与头文件(*.h)的区别和联系

    原文网址为:http://lpy999.blog.163.com/blog/static/117372061201182051413310/ 个人认为有一些道理:所以转过来学习了. 用#include ...

  3. C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法

    本文可解决的问题: 在一个头文件.h中定义一个结构体,在另一个.h文件中使用这个结构体引发错误 C2143    语法错误: 缺少")"(在"*"的前面) (编 ...

  4. 单片机零基础入门(9-1)实战:模块化编程(模块化两个案例含源码--以及无法显示头文件(.h)的解决方案)

    单片机零基础入门(9-1)实战:模块化编程-(以及无法显示头文件(.h)的解决方案) 本文作为单片机零基础入门(8-5)模块化编程的拓展和补充,比前面的单片机零基础入门(8-5)模块化编程更为详细. ...

  5. vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转

    vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官 ...

  6. 对上一篇文章《extern与头文件(*.h)的区别和联系》的学习体会

    阅读了上一篇分享的文章,我个人认为,最重要的结论如下: 总结: 对变量而言,如果你想在本源文件(例如文件名A)中使用另一个源文件(例如文件名B)的变量,方法有2种:(1)在A文件中必须用extern声 ...

  7. mp4文件时长 c++源码_【C语言】如何使用头文件 .h 编译 C 源码!so easy!

    在 C 语言中,头文件或包含文件通常是一个源代码文件,程序员使用编译器指令将头文件包含进其他源文件的开始(或头部),由编译器在处理另一个源文件时自动包含进来. 一个头文件一般包含类.子程序.变量和其他 ...

  8. c++ 头文件 .h 理解与实践

    头文件如何来关联源文件? 这个问题实际上是说,已知头文件"a.h"声明了一系列函数(仅有函数原型,没有函数实现),"b.cpp"中实现了这些函数,那么如果我想在 ...

  9. C++新增头文件.h,静态库.lib

    方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录: 工程-属性-配置属性-c/c+±–常规-附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径: 工程-属性-配 ...

最新文章

  1. flask_模拟请求post,get
  2. Python--day28--set去重
  3. 如何在linux程序中捕获异常信号
  4. 机器学习之梯度下降法(GD)和坐标轴下降法(CD)
  5. Linux、Windows、RHEL操作系统镜像
  6. 扁平化界面设计,UI设计师都要会!
  7. HDU 3785 寻找大富翁
  8. ArcGIS Runtime SDK for Android 加载shp数据,中文乱码问题
  9. debug工具_Hackintool for【黑】mac V3.4.4中文版 黑苹果必装工具箱
  10. 如何批量实现通过MP3标题重命名文件名
  11. 计算机图形学与OpenGL
  12. MATLAB——逻辑函数
  13. Verilog实现减法器
  14. 【原创文章】PHP+MySQL 创建表单并将表单数据写入数据库中。
  15. 用ios企业证书发布ipa到服务器上扫码下载
  16. 最长公共子序列 LCS(模板) poj 1458
  17. 计算机网络是按覆盖地域划分吗,下列哪些计算机网络是按覆盖地域划分的()。...
  18. opencv眼动识别(2_眼动识别)
  19. 7-19 定义一个Time类分数 20
  20. js将url地址中的信息转化为对象obj

热门文章

  1. Photoshop cs5 基础教程 形状图层的布尔运算
  2. 简单介绍API分类接口
  3. 微型计算机是计算器吗,小型计算机和微型计算机是同一个吗?
  4. 刺激战场android闪退,《绝地求生刺激战场》老是闪退怎么办 老是闪退解决方法介绍...
  5. 线上应用故障排查之一:高CPU占用
  6. Packet Tracer6.0静态路由,RIP,OSPF路由方案配置(1)
  7. java读取excel2010文件_java的poi技术读取Excel[2003-2007,2010]
  8. cad画多段线时不显示轨迹_CAD显示不出所画线段的解决方法
  9. python爬虫学习(8) —— 关于4399的一个小Demo
  10. 64位Slitaz Linux下Glibc 2.20编译式更新安装成功