c++ 变量与函数的定义与声明

首先看一下编译过程:

预编译:完成替换。

编译源文件,生成符号表,只要符号被声明就行,不需要存在。如果符号没有声明,就会报编译错误。

链接,确认所有符号存在-------》如果符号不存在,也就是没有定义,就会报链接错误。

运行

比较好的做法:

cpp文件放函数的定义,头文件放变量和函数的声明。这样,这个头文件可以被其它使用这个函数的文件include。由于这里是函数声明,所以可以任意多个文件include它。

注意,cpp文件和头文件可以分别编译两个目标文件,在链接阶段进行链接。

include是预编译,所以会把头文件的内容copy到cpp文件。

小结:

1)变量和函数的声明放在头文件中,但是类的定义需要放到头文件中,类的实现放到cpp文件中。

2)const类型的对象是可以放到头文件中。

3)内联函数,可以放到头文件中。

4)如果类的实现,也就是函数定义放到头文件中,变成内联函数,也是允许的,这就是hpp的做法。但是仅仅放到头文件中,没有变成内联函数是不允许的。

5)头文件保护的作用是防止一个cpp文件多次include同一个头文件,而不是防止多个cpp文件include同一个头文件。也就是编译都是按照文件单位。

6)头文件中变量如果没有初始化就是声明;初始化了就是定义,此时被包含之后会发生重复定义的错误。全局变量的定义宜放在某个 .c 文件中,而 .h 文件里写的是变量的声明。头文件应用于声明而不是用于定义。

7࿰

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值