C++ 的头文件和实现文件分别写什么
在 C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,
在 C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了 Package 的概念。
对于以 C 起步,C#作为“母语”的我刚开始跟着导师学习 C++对这方面还是感到很模糊。虽然我
可以以 C 的知识面对 C++的语法规范,用 C#的思想领悟 C++中类的使用。但是 C#中定义和实
现是都在一个文件中(其实都是在类里面),而使用 C 的时候也只是编程的刚刚起步,所写的程
序也只要一个文件就够了。因此对于 C++的 Package 理解以及.h 文件和.cpp 文件的总是心
存纠结。
幸好导师有详细的 PPT
让我了解,一次对于 Package 的认识就明白多了。简单讲,一个
Package 就是由同名的.h 和.cpp 文件组成。当然可以少其中任意一个文件:只有.h 文件的
Package 可以是接口或模板(template)的定义;只有.cpp 文件的 Package 可以是一个程
序的入口。
当然更具体详细的讲解,欢迎下载导师的教学 PPT-Package
来了解更多。
不过我在这里想讲的还是关于.h 文件和.cpp 文件
知道 Package 只是相对比较宏观的理解:我们在项目中以 Package 为编辑对象来扩展和修正
我们的程序。编写代码时具体到应该把什么放到.h 文件,又该什么放在.cpp 文件中,我又迷
惑了。
虽然 Google 给了我很多的链接,但是大部分的解释都太笼统了:申明写在.h 文件,定义实现
写在.cpp 文件。这个解释没有差错,但是真正下手起来,又会发现不知道该把代码往哪里打。
于是我又把这个问题抛给了导师,他很耐心地给我详详细细地表述了如何在 C++中进行代码分
离。很可惜,第一次我听下了,但是没有听太懂,而且本来对 C++就了解不深,所以也没有深
刻的印象。
经过几个项目的试炼和体验之后,我又拿出这个问题问导师,他又一次耐心地给我讲解了一遍
(我发誓他绝对不是忘记了我曾经问过同样的问题),这次我把它记录了下来。
为了不再忘记,我将它们总结在这里。
概览
非模板类型 (none-
template)
模板类型 (template)
头文件
(.h)
全局变量申明(带
extern 限定符)
全局函数的申明
带 inline