[c++ 温故知新] c++ 头文件和cpp文件关系

上学的时候,学习c++接触到头文件和cpp文件。一开始始终无法理解,为什么会有这两种文件,这两种文件有啥作用?

简单理解的话:

     头文件中存放函数的声明,cpp文件中存放定义


为何在头文件不放置函数或者变量定义呢?

1.当程序在编译过程中,编译器是吧代码进行扫描,查看代码语法是否正确,生成.o文件

2.程序生成二进制文件时,会将.o文件进行链接,此时如果在不同的.o文件中存在相同的符号,就会报重复定义的错误

因此如果在头文件中放置函数或变量定义,假如该头文件被多个cpp文件引用的话,当连接的时候就会发生重复定义错误(假设头文件中定义的函数变量都有外部属性)


通过上面的原因我们知道在头文件是不可以定义函数和变量的,对于函数来讲如下定义是声明:

void fun();
对于变量来讲的话,则为如下格式;

extern int a;
这个意思是指对变量a设置外部链接属性,与static意义相反,加上extern字段指明a为声明,不会对a分配内存,因此在链接过程中不会出现重复定义,因为整个内存中只会有一份变量a,变量a的定义只需要在一个cpp文件定义就可以了


如果在头文件中使用const  或 static 字段,则限制了该变量的作用域,仅在本文件中使用,在别的文件将无法被使用,但是不建议在头文件中使用,因为这么做会污染命名空间造成不必要的烦恼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值