c++中的.hpp文件
2023-09-11 14:17:11 时间
http://blog.chinaunix.net/uid-24118190-id-75239.html
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。
而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,
采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。
1、是Header Plus Plus 的简写。 2、与*.h类似,hpp是C++程序头文件 。 3、是VCL 专用的头文件,已预编译。 4、是一般模板类的头文件。 5、一般来说,*.h里面只有声明,没有实现,而*.hpp里声明实现都有,后者可以减 少.cpp的数量。 6、*.h里面可以有using namespace std,而*.hpp里则无。
*.hpp要注意的问题有:
a)不可包含全局对象和全局函数
由于hpp本质上是作为.h被调用者include,所以当hpp文件中存在全局对象或者全局函数,而该hpp被多个调用者include时,将在链接时导致符号重定义错误。要避免这种情况,需要去除全局对象,将全局函数封装为类的静态方法。
b)类之间不可循环调用
在.h和.cpp的场景中,当两个类或者多个类之间有循环调用关系时,只要预先在头文件做被调用类的声明即可
c)不可使用静态成员
静态成员的使用限制在于如果类含有静态成员,则在hpp中必需加入静态成员初始化代码,当该hpp被多个文档include时,将产生符号重定义错误。
相关文章
- C++ FILE 读写文件
- C++ 读取 txt 文件件中某一行
- C++ 获取某进程中某模块的入口地址(也是 PE文件头 地址)
- qt实现web服务器加载vue应用进行C++和html混合编程-连载【6】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
- C/C++下载文件_上传文件
- c++ template函数的声明和实现需要在同一个文件中
- 用C++_OpenCV生成一幅灰度值为0~255的测试图像(测试矩阵)
- 27 C++ - 对象成员变量和函数的存储
- C++第11周项目3(10)——回文日
- C++程序设计:原理与实践(进阶篇)15.4 链表
- C/C++ http协议发送字段,文件,单个和多张图片
- 第八届蓝桥杯大赛个人赛决赛(软件类)真题C++
- 《C++面向对象高效编程(第2版)》——3.13 采用语义
- 基于 C++比较文件差异程序【100010117】
- 打印并输出 log/日志到文件(C++)
- C/C++中的格式化字符
- C++基础之字符数组和字符串
- C++ 类 析构函数