(C++第五章笔记)作用域,可见性,生存期,类的静态成员,友元,const修饰,多文件结构和编译预处理

1.作用域

 

2.可见性

 

3.对象的生存期

静态生存期

动态生存期

举例:

说一下我对这个例子的理解吧,首先 i 为全局变量,具有静态生存期。这个很好理解,静态也就是说这个变量生存期和程序运行期相同。然后他是是文件作用域的,它的的可见性是最高的(除非内部申明了同名的变量,类作用域和块作用域都可见(可以修改)这个变量。

  然后明确这个静态局部变量是怎么个意思。a,b为静态局部变量,具有全局寿命,局部可见。静态可以理解了。既然是在函数里面申明的,那么就属于块作用域,也就是局部变量。所以静态说明:全局寿命(生存期和程序运行期相同),局部变量说明:局部可见(作用域只在块内)。

接着是这 c 为局部变量,具有动态生存期,每次进入函数都初始化。这个也好理解,局部变量:只在这个函数块内作用。动态相对于静态,即它的生存期是和着这个函数块的运行期相同的。也就容易理解每次进入函数都初始化了。

main函数里面的 静态局部变量 a 是同一个道理。作用域是在main函数里面,而不是全局的,故不影响other()里的 静态局部变量 a 。

另外应该还有隐藏的一条是静态局部变量第一次进入函数被初始化,如果不给赋值,则自动赋值为0。 所以申明了没赋值,则它的值自动设置为0。

总的来说呢,就是要清楚一个寿命(生存期)和可见性的区别。生存期是静态的(全局寿命)不代表可见性也是全局的。可见性判断就是基于他是文件作用域呢还是类作用域还是块作用域。

 

4.静态数据成员

这一段的话注意静态数据成员类内声明,类外定义和初始化。

 

5.静态成员函数

 

这一段的话注意类外代码使用的是类名加上作用域操作符 Point:: showCount();而不是对象名加上点的形式。

静态成员函数为什么不能使用非静态成员呢,因为他的使用形式是类名而对象名,所以没有确定的对象的非静态成员。

 

6.类的友元

 

为什么要使用友元函数呢。因为对象的private 成员只有对象本身的函数可以调用。使用了友元函数之后,就可以让这个函数来自由操作需要操作的对象的private成员。

 

7.友元类

 

这段代码申明了B类是 A的友元类。B类可以访问A类的私有和保护数据。  该例是A类的对象作为B类的一个私有成员。所以在B类的成员函数中可以直接修改 a,然后进而修改a 的私有成员。

 

8.共享数据的保护

 

为什么常对象只能调用他的常成员函数? 因为常对象不能被修改,而这恰恰是常成员函数干的活啊笨蛋

 

常引用

 

常引用一般用在函数参数中,最大的好处是可以传送地址提高效率,却不用担心变量被修改。

常对象的话也要使用常引用

 

 

8.多文件结构和编译预处理命令

C++程序的一半组织结构

 

 

9.外部变量

 

 

10.匿名的命名空间

 

11.标准C++库

 

12.

 

13.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值