简介:static如何控制存储和可见性;通过C++的名字空间特征来控制访问名字的改进方法。;使用已经采用C语言编写和编译过的函数。
10.1 来自C语言中的静态元素
static含义:
1. 静态数据区
2. 局部编译
在C++中,全局静态对象的构造函数是在main()之前调用的,所以现在有了一个在进入main()之前执行一段代码的简单的、可移植的方法,并且可以在退出main()之后用析构函数执行代码。
全局变量和普通函数都有外部连接,被声明为static的对象或函数的名字对翻译单元都有内部连接。连接只引用那些连接/装载期间有地址的成员。因此类声明和局部变量并不连接。
10.2 名字空间
namespace唯一的目的是产生一个新的名字空间。
1. namespace只能在全局范围内定义,但它们之间可以相互嵌套
2. namespace定义的结尾,右花括号后不必有分号
3. 一个namespace可以在多个头文件中用一个标识符来定义,就好像重复定义一个类一样
4. 一个namespace可以用另一个名字来作它的别名
5. 不能像创建一个类一样创建一个名字空间的实例
在一个名字空间中引用一个名字有三种方法:
1. 使用作用域运算符
2. 使用using指令把所有名字引入
3. 使用using指令一次性引用名字
10.3 C++中的静态成员
类的静态成员拥有一块地拿督的存储区,而不管创建了多少个该类的对象,所有的这些对象的静态数据成员都共享这一静态存储空间。
静态成员函数不能访问一般的数据成员,而只能访问静态数据成员,也只能调用其他的静态成员函数。它没有传递this所需的额外开销。
10.4 静态初始化的相依性
两种技术 ?s
10.5 替代连接说明
通过重载extern关键字实现:extern后跟一个字符串来指定想声明的函数的连接类型。