头文件和cpp文件之间的实际设计差异
Pracitcal design difference between header and cpp files
以Java为主要背景,我最近开始学习一些c++。我试图创建一个类来描述LinkedList。由于我希望这个类类似于一个外部库,因此我可以在其他应用程序中使用它,因此我需要将它声明为头文件。
我明白,从设计的角度来看,c++既需要头文件,也需要cpp文件,其中头文件将主要包含声明,实现将留给cpp文件。
我不明白的是上述设计技术的实际目的是什么。能够快速浏览头文件并阅读关于每个方法功能的注释对我来说似乎没有意义,因为c++(或至少我的Codeblocks编辑器)支持/**注释像Java一样,所以创建类的对象并简单地点击。按钮打开方法描述菜单,并以更有序和结构化的方式阅读任何我喜欢的描述,而不是通过头文件。
我还注意到,如果把所有的东西都放在头文件里,完全忽略cpp文件,程序运行得很好。
所以我的问题归结为我是否应该在头文件中实现所有内容,或者这是否被认为是不可接受的c++编码实践,如果是,为什么。
头文件包含能够使用该功能所需的最小值,因为它们涉及到一些中间预处理文件。文件越小,编译这个单元就越容易。
在这种意义上,它们必须包含结构定义和函数声明。这与Java不同,Java不需要事先声明才能使用,这是一个现在无法修复的历史产物。#include
行实际上是在实际的C/CPP文件的头文件中粘贴文本(有点——预处理,条件编译等也必须发生在头文件中)
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?