头函数最小包含的重要性以及必要性

原创 2015年07月08日 16:08:43

在《google c++ style guide》编程规范中,其中提到头函数最小包含的问题,这里细说一下我在项目遇到的坑,以及对最小包含的理解。

何为头函数最小包含?具体的说就是:在一个头函数中,当一个前置声明足够时,不要使用#include,不适用命名空间(using namespace)。

基本说来,在头函数中,可以使用#include的情况大概有这么几种:

1,头文件中用到的基础库类,如 #include <vector>, #include <map>

2,头函数中继承的父类,如 #include "Strategy.h"

3,不涉及宏,非通用模块的结构体定义类, 如 #include "def.h"

4,封装的、使用的非常成熟的基础类,(不建议)如: #include "base/string_util.h"


总而言之,除了1,2情况外,其他两种能够少用#include,尽量少用,否则你程序明明没错,但是经常会遇到:expected primary-expression ...... ,expected unqualified-id......等等等等一系列莫名其妙的错误。而且这种问题往往要从一个文件,追到另一个文件,再从一个文件,追到另一个文件,往往要精疲力尽地找上个十万八千里才能发现问题在哪。而且编译缓慢,每一次编译都要重新编译头文件中所有的文件。

避免的方法:

在头文件中,只申明,不具体构造。

e.x.  class StringHandler;

      scoped_ptr string_handler_<StringHandler>;

在具体的cc文件中,再具体的构造:

      string_handler_.reset(new StringHandler());

在具体的函数参数传递时,尽量使用引用和指针,这样不仅可以最小包含,还能提高运行效率(类参数传递时,不需要调用类的拷贝构造函数)

e.x.  void Function_Do(const MyClass& in, MyClass* out);


以上,个人无聊总结,希望对大家有用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

密码安全的重要性

关于密码的安全性,我相信这是一个永远没有终点的赛跑, 在我们程序开发当中,保护用户账号密码和资料是非常重要的,有人多人都单单只是加密用户密码,但是却遗忘了用户的帐号加密也是很重要的,还有..........
  • JACKO_CHAN
  • JACKO_CHAN
  • 2016年10月11日 10:19
  • 783

知识管理的重要性

什么是知识管理   一般是指个人或组织利用软件系统或其他工具,对日常工作、生活中大量的有价值的想法、方案、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用...
  • luckydarcy
  • luckydarcy
  • 2016年09月25日 00:14
  • 907

软件开发之文档的重要性

大三下学期,一次偶然的机会让我开发了一个完整的小项目,也让我第一次对软件开发的整体流程有了一个比较全面细致的了解。比起那些还没有参加工作的学生来说,能这么早接触到实际项目开发真的是很幸运,其实也非常感...
  • bhdxmaomi
  • bhdxmaomi
  • 2016年01月15日 13:28
  • 830

案例分析——需求分析的重要性

所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样...
  • RUIBOBAIENDITE
  • RUIBOBAIENDITE
  • 2016年07月10日 14:45
  • 623

随着HTML5的发展,Javascript的重要性逐步增加

随着HTML5的发展,Javascript的重要性逐步增加 发布时间:2013-08-23 浏览次数:262   很长时间以来,JavaScript在我眼里都是编程语言中的二等公民。早先,它经常是很...
  • yuguanquan1990
  • yuguanquan1990
  • 2014年01月31日 14:47
  • 937

IT服务外包的必要性

 据统计,国内有10万个各级政府机构和150万家企业,目前许多客户已经历了买设备、上应用发展到今天保运行阶段。IT规划、管理、实施、维护是一项技术复杂、成本高昂、变化频繁、人员素质要求高的系统工...
  • dotfun
  • dotfun
  • 2013年11月20日 00:26
  • 1879

Oracle数据库版本定期检视与升级的必要性分析

10.2版数据库(10.2系列的终极版10.2.0.5),于2015年7月就已经停止了补丁服务,如果您还依然使用此版本,在遇到新问题时,就准备“自生自灭”吧。 而11.2系列,当前很多单位在使...
  • ljunjie82
  • ljunjie82
  • 2016年02月25日 15:51
  • 1488

信息安全的重要性不容忽视

2011年12月底在国内发生的互联网用户信息泄露事件,由于涉及CSDN、人人网、天涯 、开心网、多玩、世纪佳缘、珍爱网、美空网、百合网、178、7K7K等众多知名网站,因此被媒体广为报道。事件的起因是...
  • u014348203
  • u014348203
  • 2014年03月25日 14:04
  • 1050

关于数据库备份的定义和重要性

所谓备份,就是通过特定的办法,讲数据库的必要文件复制到转储设备的过程.其中,转储设备是指用于放置数据库拷贝的磁带或磁盘      选择备份的依据是:丢失数据的代价与确保数据不丢失的代价之比.还有的...
  • u010739551
  • u010739551
  • 2015年11月06日 11:24
  • 1660

谈谈工作总结的重要性

入职一年多了,对工作内容越来越熟悉 工作也越来越顺手!当然了感触最深、变化最大的还是工作心态。去年刚接触地图,工作中主要是学习阶段,有太多的IDEA,空余时间也做过很多的实验、尝试,当时我的mento...
  • dizuo
  • dizuo
  • 2013年05月29日 17:28
  • 3793
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:头函数最小包含的重要性以及必要性
举报原因:
原因补充:

(最多只允许输入30个字)