头文件应该怎么写

因为一个对象只能定义一次,能够声明多次,所以头文件最重要的规则是只声明,不定义(除少数对象外)。而且只声明其他文件需要用到的对象,其他文件不需要用到的对象没必要在头文件中声明。当其他文件需要用到本文件定义的一些对象时,我们可以将这些对象写到头文件中,其他文件只要include这个头文件即可使用相应的对象。

头文件一般包含类的定义(不包含类定义外部的成员函数实现),extern变量声明,以及函数声明。要看一个项目好不好,看它的头文件合不合理是一个参考因素。只有从逻辑上关联比较紧密的对象声明,我们才能够放在一个头文件当中,这样它们在一起被使用的概率比较大,而且符合逻辑,方便管理。

能够在头文件中定义的特殊情况,除了类定义之外,还有在编译的时候已知的const对象和内联函数。除此之外不要定义,只能声明。编译时已知的const对象是指,用常量表达式初始化赋值的const对象。如:
const int ival = 5; //right
const int ival1 = a; //error

其实在每一个包含该头文件的文件中都定义了一个相同名字的相同值的const对象。但是const对象的有效范围只能是本文件,所以不会和其他文件的产生冲突。这样一来,你可能会问,每个包含该头文件的文件都定义了一个一模一样的const对象,都给它分配内存,那岂不是差的代码风格。其实不会,在代码编译之后,凡是调用了该const对象的地方都直接用对应的常量代替,而不会单独给该const对象分配存储空间。

还需要注意的是头文件保护符,以避免头文件被多次包含,和内联函数的解释。后续有空做进一步解释。
下面是一个简单的头文件例子:

#ifndef TEST_H   //!< 头文件保护符,防止多重调用
#define TEST_H 

const int ival = 5 * 2;      //!< 用常量表达式初始化的const对象

extern double totalNum;     //!< extern对象,说明该对象在其他文件定义
extern double sq2;

int addInt(int a, int b);   //!< 函数声明
double sqrInt(int a);

#endif
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值