头文件和cpp文件之间的实际设计差异

Pracitcal design difference between header and cpp files

本文关键字:文件 cpp 之间      更新时间:2023-10-16

以Java为主要背景,我最近开始学习一些c++。我试图创建一个类来描述LinkedList。由于我希望这个类类似于一个外部库,因此我可以在其他应用程序中使用它,因此我需要将它声明为头文件。

我明白,从设计的角度来看,c++既需要头文件,也需要cpp文件,其中头文件将主要包含声明,实现将留给cpp文件。

我不明白的是上述设计技术的实际目的是什么。能够快速浏览头文件并阅读关于每个方法功能的注释对我来说似乎没有意义,因为c++(或至少我的Codeblocks编辑器)支持/**注释像Java一样,所以创建类的对象并简单地点击。按钮打开方法描述菜单,并以更有序和结构化的方式阅读任何我喜欢的描述,而不是通过头文件。

我还注意到,如果把所有的东西都放在头文件里,完全忽略cpp文件,程序运行得很好。

所以我的问题归结为我是否应该在头文件中实现所有内容,或者这是否被认为是不可接受的c++编码实践,如果是,为什么。

头文件包含能够使用该功能所需的最小值,因为它们涉及到一些中间预处理文件。文件越小,编译这个单元就越容易。

在这种意义上,它们必须包含结构定义和函数声明。这与Java不同,Java不需要事先声明才能使用,这是一个现在无法修复的历史产物。#include行实际上是在实际的C/CPP文件的头文件中粘贴文本(有点——预处理,条件编译等也必须发生在头文件中)