51.4名字空间域和类域 在C十中支持三种形式的域:局部域( local scope)、名字空间 域( name space scope)和类域( class scope) 名字空间域是不包含在函数声明、函数定义或类定义内的程序文 本部分。换言之,名字空间域可含有函数声明、函数定义或类定义等 等,而不能相反包含。程序的最外层的名字空间域被称为全局域 ( global scope),或全局名字空间域( global namespace scope) 程序员也可以利用名字空间定义( name space definition)来定 义用户声明的(user- declared)的名字空间,它们嵌套在全局域内 用户声明的名字空间定义以关键字 namespace开头,后面是名字 空间的名字(标识符)。该名字在它被定义的域中必须唯一,不能与 其它实体同名,因为用户声明的名字空间可以不连续,分为多段,但 它们是同一个名字空间
5.1.4 名字空间域和类域 在C++中支持三种形式的域:局部域(local scope)、名字空间 域(namespace scope)和类域(class scope)。 名字空间域是不包含在函数声明、函数定义或类定义内的程序文 本部分。换言之,名字空间域可含有函数声明、函数定义或类定义等 等 ,而不能相反包含。程序的最外层的名字空间域被称为全局域 (global scope),或全局名字空间域(global namespace scope) 程序员也可以利用名字空间定义(namespace definition)来定 义用户声明的(user-declared)的名字空间,它们嵌套在全局域内。 用户声明的名字空间定义以关键字namespace开头,后面是名字 空间的名字(标识符)。该名字在它被定义的域中必须唯一,不能与 其它实体同名,因为用户声明的名字空间可以不连续,分为多段,但 它们是同一个名字空间
51.4名字空间域和类域 名字空间域的引入,主要是为了解决全局名字空间污染 global namespace pollution)问题,即防止程序中的全局实体 名与C++各种库中声明的全局实体名冲突。 using声明以关键字 using开头,后面是被限定修饰的 ( qualified)名字空间成员名。 例如 namespace cplusplus_ primer namespace Matrixlibt /名字空间嵌套 class matrix{…,}/名字空间类成员 matrix }
5.1.4 名字空间域和类域 名字空间域的引入,主要是为了解决全局名字空间污染 (global namespace pollution)问题,即防止程序中的全局实体 名与C++各种库中声明的全局实体名冲突。 using 声 明 以 关 键 字 using 开 头 , 后 面 是 被 限 定 修 饰 的 (qualified)名字空间成员名。 例如: namespace cplusplus_primer{ namespace Matrixlib{ //名字空间嵌套 class matrix{……} //名字空间类成员matrix …... } }
51.4名字空间域和类域 使用 using指示符可以一次性地使库中所有成员都可以直接被使用,而 不用限定修饰名。 using cplusplus_ _primer: Matrixlib: :matrix mi 等同于: using cplusplus_ primer: Matrixlib matrix m
5.1.4 名字空间域和类域 使用using指示符可以一次性地使库中所有成员都可以直接被使用,而 不用限定修饰名。 using cplusplus_primer::Matrixlib::matrix m; 等同于: using cplusplus_primer::Matrixlib matrix m;
51.4名字空间域和类域 使用 using指示符可以一次性地使库中所有成员都可以直接被使用, 而不用限定修饰名。 using指示符以关键字 using开头,后面是关键字 namespace,然后是 名字空间名。 例如 # include“ primer. h”//头文件中定义了 cplusplus primer名字空间 using namespace cplusplus primer;/ using指示符使 cplusplus primer所有成员都 成为可见的 void func( matrix&m){};//func为 cplusplus primer名字空间中的成员 // cplusplus_ primer中所有成员可不加限定修饰地被使用
5.1.4 名字空间域和类域 使用using指示符可以一次性地使库中所有成员都可以直接被使用, 而不用限定修饰名。 using指示符以关键字using开头,后面是关键字namespace,然后是 名字空间名。 例如: # include “primer.h” //头文件中定义了cplusplus_primer名字空间using namespace cplusplus_primer; //using指示符使cplusplus_primer所有成员都 成为可见的 …… void func(matrix&m){…} ;// func()为cplusplus_primer名字空间中的成员 //cplusplus_primer中所有成员可不加限定修饰地被使用
51.4名字空间域和类域 类体也定义了一个蜮称为类城。在类城中说明的标识符 仅在该类的类城内有效。必须加上“类名::”作限定修 饰 类的实体—对象中的公有成员也可以在对之外访 问,但必须使用成员访河操作符“”,对象名+“”+成员名。 定义类本身的目的就是要实现一个封装性,对外是封 闭的,对内是开放的,在程序中并不总是需要用成员访问 符之类来引用类成员。多教程序代码本身就在类城中,这 些程序可以直接访问类成员
5.1.4 名字空间域和类域 类体也定义了一个域称为类域。在类域中说明的标识符 仅在该类的类域内有效。必须加上“类名::”作限定修 饰。 类的实体——对象中的公有成员也可以在对象之外访 问,但必须使用成员访问操作符“.”,对象名+“.”+成员名。 定义类本身的目的就是要实现一个封装性,对外是封 闭的,对内是开放的,在程序中并不总是需要用成员访问 符之类来引用类成员。多数程序代码本身就在类域中,这 些程序可以直接访问类成员