第十章 名字控制

2017-03-20  本文已影响0人  意不适

简介: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后跟一个字符串来指定想声明的函数的连接类型。

上一篇 下一篇

猜你喜欢

热点阅读