前置声明和Include以及预编译头
2011-12-20 15:18
127 查看
今天研究了一下前置声明和预编译头的东西,归纳几点东西
1、头文件中能用前置声明的不要用Include,尽量在cpp中包含头文件。大型工程最好做个Prerequisites.h,把所有类型前置声明在一起,防止头文件的重复包涵。
2、预编译头文件放那些大多数cpp都会包含的而且不是经常改动的头文件。
1、A 继承自 B——没说的只能Include
2、A中有B类型的成员变量——只能Include
3、A中有B类型的指针的成员变量——可以前置声明
4、A中有B类型的引用的成员变量——可以前置声明
5、A中有std::list<B>类型的指针的成员变量——可以前置声明(包括vector,map等)——可以前置声明,因为STL内部是使用的B的指针
6、A中有成员函数的参数或者返回值是B——可以前置声明
7、A中有成员函数的参数或者返回值是B,但是函数中调用了B得成员函数并且函数体定义在头文件中——要Include
使用原则:
尽量在cpp文件里包含头文件1、头文件中能用前置声明的不要用Include,尽量在cpp中包含头文件。大型工程最好做个Prerequisites.h,把所有类型前置声明在一起,防止头文件的重复包涵。
2、预编译头文件放那些大多数cpp都会包含的而且不是经常改动的头文件。
前置声明 && include
(假设有class A 和class B)1、A 继承自 B——没说的只能Include
2、A中有B类型的成员变量——只能Include
3、A中有B类型的指针的成员变量——可以前置声明
4、A中有B类型的引用的成员变量——可以前置声明
5、A中有std::list<B>类型的指针的成员变量——可以前置声明(包括vector,map等)——可以前置声明,因为STL内部是使用的B的指针
6、A中有成员函数的参数或者返回值是B——可以前置声明
7、A中有成员函数的参数或者返回值是B,但是函数中调用了B得成员函数并且函数体定义在头文件中——要Include
相关文章推荐
- C++中的“include”,“namespace”以及“前置声明”
- C++类中使用前置声明和使用include包含头文件的感想
- 有类成员时,什么时候可以前置声明.什么时候需要#include .
- 前置声明以及在 Callback 实现中的应用
- linux c 一站式学习 extern关键词作用、变量的声明与定义以及extern与include的区别(都与extern有关)
- 枚举和前置声明以及可能引起的问题
- 有类成员时,什么时候可以前置声明.什么时候需要#include .
- C++ 前置声明和include引起的问题
- C++中头文件中是包含include还是包含类的前置声明
- C++中头文件中是包含include还是包含类的前置声明
- C++中头文件中是包含include还是包含类的前置声明
- 【转】static和extern的区别;当使用另外一个文件中的变量、类、方法时,什么时候改用extern声明,什么时候该include?
- 使用预声明解决结构体互相引用以及头文件内容互相包含的问题
- C++类的前置声明
- linux bash shell 子程序、函数的简单声明以及调用
- Qt4.8.4编译X86出错:/usr/include/linux/futex.h:96: 错误:‘u32’ 在此作用域中尚未声明
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
- C++的前置声明
- c++ 之类的前置声明
- ES 5、ES 6变量和函数声明以及作用域总结