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.