C++ .h 与 .hpp 的区别
时间:2019-08-19
本文章向大家介绍C++ .h 与 .hpp 的区别,主要包括C++ .h 与 .hpp 的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文地址:http://blog.csdn.net/f_zyj/article/details/51735416
.hpp,本质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该.hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用project中的cpp文件数与编译次数,也不用再发布lib与dll文件,因此非常适合用来编写公用的开源库。
hpp的优点不少,但是编写中有以下几点要注意:
1、是Header Plus Plus的简写。(.h和.hpp就如同.c和.cpp似的)
2、与.h类似,.hpp是C++程序头文件格式。
3、是VCL专用的头文件,已预编译。
4、是一般模板类的头文件。
5、一般来说,.h里面只有声明,没有实现,而.hpp里声明实现都有,后者可以减少.cpp的数量。
6、.h里面可以有using namespace std,而.hpp里则无。
7、不可包含全局对象和全局函数。
由于.hpp本质上是作为.h被调用者include的,所以当hpp文件中存在全局对象或者全局函数,而该hpp被多个调用者include时,将在链接时导致符号重定义错误。要避免这种情况,需要去除全局对象,将全局函数封装为类的静态方法。
原文地址:https://www.cnblogs.com/Allen-rg/p/11376342.html
- CentOS7下安装mysql5.6修改字符集为utf8并开放端口允许远程访问
- CentOS7下mysql5.6修改默认编码
- 在idea中maven项目jdk编译version总是跳到1.5
- 命令行打印文件树列表: tree
- JavaScript 获取鼠标及元素在页面上的位置
- Spring cache简单使用guava cache
- SpringMVC参数校验(针对`@RequestBody`返回`400`)
- Java8学习(3)- Lambda 表达式
- Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式
- java中byte, iso-8859-1, UTF-8,乱码的根源
- 如何启动一个本地静态服务器
- Hello ReactJS
- git合并历史提交
- 常用连续型分布介绍及R语言实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 伸手党的容器镜像加固流程
- 前端模块化开发--React框架(四):高级应用(redux)
- Tomcat性能优化,学会薪水翻倍
- 前端模块化开发--React框架(三):应用进阶(react-router4&&antd框架)
- boost asio通信
- 前端模块化开发--React框架(二):脚手架&&网络请求框架
- Dubbo系列笔记之服务引用过程,不服不行
- 人人都能看懂的鸿蒙 “JS 小程序” 数据绑定原理
- Xcode12适配The linked library is missing one or more architectures required by this target问题
- [译] VueJS 中更好的组件组合方式
- 无异常日志,就不能排查问题了???
- 带你跳出源码地狱,从原理上理解MyBatis对Spring源码的扩展实现
- 网上翻译嫌麻烦?Python破解有道JS加密,让你随时能翻译
- 前端模块化开发--React框架(一): 入门和面向组件编程
- Python爬虫实战练习:爬取美团旅游景点评论数据