转自:https://blog.csdn.net/ALONE_WORK/article/details/126986443
文章知识点来自《大规模 C++ 程序设计》。
当程序具有规模的时候,编译、链接的速度跟包含的头文件有很大的关系,我们需要知道头文件中应该包含什么,不应该包含什么。
代码示例
1 // radio.h 2 #ifndef __RADIO_H__ 3 #define __RADIO_H__ 4 5 // 应包含内容 6 class Radio // 正确:类定义 7 { 8 static int s_count; // 正确:静态数据成员声明 9 static const double S_PI; // 正确:静态常量数据成员声明 10 int d_size; // 正确:数据成员定义 11 // ... 12 public: 13 int size() const; // 正确:成员函数声明 14 // ... 15 }; 16 17 inline int Radio::size() const // 正确:内联函数定义 18 { 19 return d_size; 20 } 21 22 // 不应包含内容 23 int Radio::s_count; // 错误:静态数据成员定义,应放在 .cpp 文件中 24 double Radio::S_PI = 3.1415926; // 错误:静态常量数据成员定义,应放在 .cpp 文件中 25 int Radio::size() const { /*...*/ } // 错误:成员函数定义,应放在 .cpp 文件中 26 int z; // 错误:外部数据定义 27 extern int LENGTH = 10; // 错误:外部数据定义 28 const int WIDTH = 5; // 避免:常量数据定义 29 static int y; // 避免:静态数据定义 30 static void func() { /*...*/ } // 避免:静态函数定义 31 32 #endif // __RADIO_H__
原因
更多内容请参考原书。
在 C++ 头文件的作用域内放置带有内部链接的定义,如静态函数或数据,是合法的,但是这种做法并不理想。这样不仅污染了全局名称空间,而且包含该头文件的每一个编译单元中消耗数据空间。
=========================================================================================================================
此外,内联函数、constexpr函数(c++ primer P214)通常也都定义在头文件中
标签:__,头文件,定义,包含,int,什么,const From: https://www.cnblogs.com/tan-wm/p/17071349.html