头文件

      头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义,extern变量的声明和函数的声明。

1.头文件用于声明而不是用于定义

    当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次。下列语句是一些定义,所以不应该放在头文件里:

    extern int ival = 10;

    double fica_rate;

虽然ival声明为extern,但是他有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字extern。同一个程序中有两个以上文件含有上述任一个定义都会导致多重定义链接错误。

    因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

    注意:对于头文件不应该含有定义这一规则,有三个例外。头文件可以定义类,值在编译时就已知道的const对象和inline函数。这些尸体可在多个源文件中定义,只要每个源文件中的定义是相同的。

2.一些const对象定义在头文件中

    当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

    如果const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量一样,该const变量应该在一个源文件中定义并初始化。应在头文件中为它添加extern声明,以使其能被多个文件共享。

原文地址:https://www.cnblogs.com/hehehaha/p/6332735.html