头函数最小包含的重要性以及必要性
来源:互联网 发布:windows如何录屏 编辑:程序博客网 时间:2024/05/21 17:25
在《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);
以上,个人无聊总结,希望对大家有用。
- 头函数最小包含的重要性以及必要性
- cc2541调试-头文件包含的重要性
- 集群的重要性与必要性
- 企业网站建设的重要性和必要性
- 关于头文件重复包含以及函数重定义问题
- 关于头文件重复包含以及函数重定义问题
- 关于头文件重复包含以及函数重定义问题
- 常用头文件及包含的函数
- 常用头文件及包含的函数
- [全程建模]分析模型的必要性和重要性
- 论英语对提高程序员素质的必要性和重要性
- 一个包含所有C++头文件的头函数
- 包含min函数的最小栈
- 拷贝构造函数的必要性
- OpenCV以及C++的头文件的包含方式
- 【react框架】利用shouldComponentUpdate钩子函数优化react性能以及引入immutable库的必要性
- 【react】利用shouldComponentUpdate钩子函数优化react性能以及引入immutable库的必要性
- 虚析构函数的重要性
- 虚拟机、linux系统安装
- java枚举使用详解
- 思科Cisco 交换机 VTP负载均衡的配置
- 一致性Hash分布算法实例
- C语言 位序 字节序 和 网络字节序 帧格式
- 头函数最小包含的重要性以及必要性
- while循环中return、break、continue的区别
- LA4328 Ping Pong (树状数组)
- 三角架选择
- java enum(枚举)使用详解 + 总结
- MySql远程访问无法连接的问题!
- @property参数类型和代表意义
- c++ primer读书笔记-第十章 关联容器
- 虚幻4蓝图:Hello World