Google C++编程规范 1.2
2012-11-05 13:20
253 查看
头文件依赖
当前向声明可满足使用的情况下不要使用#include
你包含一个头文件意味引入一个依赖,当头文件发生改变时,你的源代码文件必须重新编译。如果你的头文件包含其他头文件,其他的头文件发生任何一点改变,你源代码文件必须重新编译,因此我们应选择最小依赖,特别是头文件包含其他头文件时。
在你需要包含你自己定义的头文件时使用前向声明,你能减少一大堆头文件。比如说,你的头文件使用File类而不需要访问File类的声明,你只需要在头文件中前向声明class File,而不是使用#include “file/base/file.h”。
怎样才能在头文件中使用class Foo而访问其定义?
我们可以将Foo类型的成员变量声明为指针Foo*或引用Foo&
我们可以声明(不是定义)类型Foo为函数的参数和返回值(例外:如果参数Foo或const Foo&有一个noo-explicit,单参构造函数,在这种情况下我们需要Foo的定义以支持自动类型转换。)
我们可以声明Foo类型的static成员变量。这是因为static成员变量定义在class外部。
在别的情况下,如你定义Foo的子类或拥有一个Foo数据成员,你必须包含Foo的头文件。
某些情况下使用指针成员变量(或scoped_ptr)来替代对象成员变量是个更好的选择。但这种情况下使代码可读性下降以及性能下降,所以如果只是降低头文件依赖性应避免使用这种技术。
当然.cc文件需要classes的定义,通常情况下会包含几个头文件。
注意:
如果在你的源文件中使用Foo,你应该自己引进Foo的定义,或通过#include和前向声明。不要依赖已经包含了Foo定义的其他头文件。例外:如果Foo已经在myfile.cc中使用,使用#include或前向声明包含myfile.h而不包含myfile.cc。
当前向声明可满足使用的情况下不要使用#include
你包含一个头文件意味引入一个依赖,当头文件发生改变时,你的源代码文件必须重新编译。如果你的头文件包含其他头文件,其他的头文件发生任何一点改变,你源代码文件必须重新编译,因此我们应选择最小依赖,特别是头文件包含其他头文件时。
在你需要包含你自己定义的头文件时使用前向声明,你能减少一大堆头文件。比如说,你的头文件使用File类而不需要访问File类的声明,你只需要在头文件中前向声明class File,而不是使用#include “file/base/file.h”。
怎样才能在头文件中使用class Foo而访问其定义?
我们可以将Foo类型的成员变量声明为指针Foo*或引用Foo&
我们可以声明(不是定义)类型Foo为函数的参数和返回值(例外:如果参数Foo或const Foo&有一个noo-explicit,单参构造函数,在这种情况下我们需要Foo的定义以支持自动类型转换。)
我们可以声明Foo类型的static成员变量。这是因为static成员变量定义在class外部。
在别的情况下,如你定义Foo的子类或拥有一个Foo数据成员,你必须包含Foo的头文件。
某些情况下使用指针成员变量(或scoped_ptr)来替代对象成员变量是个更好的选择。但这种情况下使代码可读性下降以及性能下降,所以如果只是降低头文件依赖性应避免使用这种技术。
当然.cc文件需要classes的定义,通常情况下会包含几个头文件。
注意:
如果在你的源文件中使用Foo,你应该自己引进Foo的定义,或通过#include和前向声明。不要依赖已经包含了Foo定义的其他头文件。例外:如果Foo已经在myfile.cc中使用,使用#include或前向声明包含myfile.h而不包含myfile.cc。
相关文章推荐
- C++编程规范_Google
- [Google Guava] 1.2-前置条件
- 跟着Google学Android —— 1.2 第一次当然是献给Hello World
- Google map v3 using simple tool file google.map.util.js v 1.2
- Google C++编程规范 – 第二十一条 -《-inl.h文件》
- Google的C++编程规范
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- Google C++编程规范(一)————(头文件篇)
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- Google C++编程规范 1 头文件
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- Google 编程规范1.2
- [Google Guava] 1.2-前置条件
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- google c++编程规范(重点记录)
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- Google-C++编程规范(完整)
- 一张图总结Google C++编程规范(Google C++ Style Guide)
- Google C++编程规范学习--头文件
- [Google Guava] 1.2-前置条件