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

来源:互联网 发布:广联达定额计价软件 编辑:程序博客网 时间:2024/05/18 07:07

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

简单理解的话:

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


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

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

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

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


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

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

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


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

0 0
原创粉丝点击