c++学习总结(第三篇)

1、设计自己的头文件

头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、extern变量的声明和函数的声明。头文件的正确使用能够带来两个好处:保证所有文件使用给定实体的统一声明;当声明需要修改时候,只有头文件需要更新。

2、头文件用于声明而不是用于定义

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

extern int ival = 10;//已经赋予初值,所以是定义

double fica_rate;//没有extern关键字,所以是定义

同一个程序中有两个以上文件含有上述任何一个定义都会导致冲定义错误。

对于头文件不应该含有定义这一规则,有三个例外。头文件可以定义类、值在编译时就已知道的const对象和inline函数,这些尸体可在对个源文件中定义,只要每个源文件中的定义是相同的。在头文件中定义这些实体,是因为编译器需要它们的定义(不只是声明)来产生代码。例如,为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员;同样还需要知道能够在这些对象上执行的操作。类定义提供了所需要的信息。在头文件中定义const对象则需要更多地解释,见3

3、一些const对象定义在头文件中(解释2中的第二种情况,const

在c++中,有些地方需要放置敞亮表达式,例如枚举成员的初始化必须是常量表达式。一般来说常量表达式是编译器在编译时候就能计算出结构的表达式。当const整型变量通过常量表达式自我初始化时,这个const整型变量就可能是常量表达式。而const变量要成为常量表达式,初始化式必须为编译器可见。为了能够让多个文件使用相同的常量值,const变量和它的初始化必须为每个文件都可见。而要使初始化式可见,一般都把这样的const变量定义在头文件中。那样的花,无论该const变量何时使用,编译器都能看尽啊其初始化式。

但是,c++中的任何变量都只能定义一次。定义会分配存储空间,而所有对该变量的使用都关联到同一存储空间。因为const对象默认为定义它的文件的局部变量,所以把它们的定义放在头文件中是合法的。

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

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


个人总结:上面的内容我也有很多迷惑和不解的地方,这些东西的学习还是要在编码中去理解。有的时候这些基础的概念理解透彻了,后面看代码写代码才能更加轻松。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值