c++中的.hpp文件

摘要:
实现代码将直接编译到调用者的obj文件中,不会生成单独的obj。使用hpp将大大减少项目中cpp文件的数量和编译时间,并且不再发布烦人的lib和dll,因此非常适合编写公共开源库。

http://blog.chinaunix.net/uid-24118190-id-75239.html

hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要includehpp文件即可,无需再将cpp加入到project中进行编译。

实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,

采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的libdll,因此非常适合用来编写公用的开源库

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时,将产生符号重定义错误。唯 一的例外是const static整型成员,因为在vs2003中,该类型允许在定义时初始化,如:

 

 

免责声明:文章转载自《c++中的.hpp文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Intellij IDEA如何配置Git?Redis缓存设计和问题处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ATL中使用CString

在stdafx.h 中的 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 下添加一下代码即可: #define _WTL_NO_CSTRING #include <atlstr.h> #define _WTL_NO_WTYPES #include <at...

谈谈你对 keep-alive 的了解?

在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止二次渲染,这样会大大的节省性能。 keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 ,其有以下特性: 一般结合路由和动态组件一起使用...

QSS 样式表 (一)

在开发应用程序时,往往对界面的美观有一定的要求。Qt 引入了 QSS 机制,使得界面的美化工作变的轻轻松松。嗯,QSS听着有点耳熟。是的,QSS的语法和CSS类似。在此做些总结。 先来看一个简单的例子。 1 #include <QtGui/QPushButton> 2 #include <QtGui/QWidget> 3...

第十一节:Bundles压缩合并js和css及原理分析

一. 简介  1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是MVC中特有的一种优化方式。  (当然现在前端也有很多基于node的工作流插件,可以合并压缩混淆js或css) 2. 原理(了解即可):核心方法ApplyTr...

【DLL相关】实现函数的DLL封装,并在另一个项目中调用

直接给出步骤: ===========函数的DLL封装=========== 1.创建第一个项目:win32控制台程序,应用程序类型:DLL,附加选项:导出符号(命名:double_dll) 2.double_dll.h中加入函数定义   extern DOUBLE_DLL_API int doublefun(int);//DOUBLE_DLL_API 根...

Win10+VS2017配置pthread

0、pthread源码下载:https://sourceware.org/pthreads-win32/ 1、下载pthreads-w32-2-9-1-release.zip完毕后,解压,内容如下 其中,【Pre-built.2】是pthreads for win32的头文件和库文件,【pthreads.2】是源代码,【QueueUserAPCEx】是一...