.2名字空间 名字空间必须在全局作用域内用namespace定 义,不能在函数及函数成员内定义,最外层名 字空间名称必须在全局作用域唯一。 ■ 名字空间是C++引入的一种新作用域,类似于 面向对象的包、类簇、主题等概念。不同是 C++的名字空间既面向对象又面向过程。 ·同一名字空间中的标识符名必须唯一,不同名 字空间中的标识符名可以相同。当一个程序引 用多个名字空间的同名成员时,可以用名字空 间加作用域运算符限定
4.2 名字空间 名字空间必须在全局作用域内用namespace 定 义,不能在函数及函数成员内定义,最外层名 字空间名称必须在全局作用域唯一。 名字空间 是C++引入的一种新作用域,类似于 面向对象的包、类簇、主题等概念。不同是 C++的名字空间既面向对象又面向过程。 同一名字空间中的标识符名必须唯一,不同名 字空间中的标识符名可以相同。当一个程序引 用多个名字空间的同名成员时,可以用名字空 间加作用域运算符限定
.2名字空间 名字空间可以分多次定义,即可以先在初始定 义中定义一部分成员,然后在扩展定义中再定 义另一部分成员,或者定义初始定义中声明的 函数原型。初始定义和扩展定义的语法格式相 同。 ■保留字using用于指示程序要引用的名字空间, 或者用于声明程序要引用的名字空间成员。在 引用名字空间的某个成员之前,该成员必须已 经在名字空间中声明了原型或进行了定义
4.2 名字空间 名字空间可以分多次定义,即可以先在初始定 义中定义一部分成员,然后在扩展定义中再定 义另一部分成员,或者定义初始定义中声明的 函数原型。初始定义和扩展定义的语法格式相 同。 保留字using用于指示程序要引用的名字空间, 或者用于声明程序要引用的名字空间成员。在 引用名字空间的某个成员之前,该成员必须已 经在名字空间中声明了原型或进行了定义
名字空间 名字空间成员三种访问方式: ①直接访问成 员,②引用名字空间成员,③引用名字空间。 。直接访问成员的形式为:<名字空间名称>:<成员 名称>。直接访问总能唯一访问名字空间成员。 引用成员的声明形式为:using<名字空间名称 >:<成员名称>。如果引用时只声明或定义了一部 分重载函数原型,则只引用这些函数。引用这些函 数时只能给出函数名,不能带函数参数。 引用名字空间的形式为:using namespace<名字 空间名称>。其中所有的成员可用,多个名字空间 成员同名。 ·名字空间的成员同名时用作用域运算符限定
4.2 名字空间 名字空间成员三种访问方式:①直接访问成 员,②引用名字空间成员,③引用名字空间。 直接访问成员的形式为: <名字空间名称>::<成员 名称 >。直接访问总能唯一访问名字空间成员。 引用成员的声明形式为:using <名字空间名称 >::<成员名称 >。如果引用时只声明或定义了一部 分重载函数原型,则只引用这些函数。引用这些函 数时只能给出函数名,不能带函数参数 。 引用名字空间的形式为: using namespace <名字 空间名称 >。其中所有的成员可用,多个名字空间 成员同名。 名字空间的成员同名时用作用域运算符限定
4.2名字空间 【例4.5】名字空间ALPHA定义的变量x及函数g。 #include <iostream.h> ■ namespace ALPHA{ I/初始定义ALPHA extern int x; //声明整型变量x ■ void g(int); I/声明函数原型void g(int) void g(long){ cout <"Processing a long argument.\n"; ■ } } using ALPHA::X; /声明引用变量x using ALPHA::g; /声明引用void g(int)和g(long)
4.2 名字空间 【例4.5】名字空间ALPHA定义的变量 x及函数 g 。 #include <iostream.h> namespace ALPHA { //初始定义ALPHA extern int x; //声明整型变量 x void g(int); //声明函数原型void g(int) void g(long) { cout << "Processing a long argument.\n"; } } using ALPHA::x; //声明引用变量 x using ALPHA::g; //声明引用void g(int) 和g(long)
.2名字空间 namespace ALPHA /扩展定义ALPHA int x=5; //定义整型变量x void g(int a) /定义函数原型void g(int) ■ cout <"Processing a int argument.In";} void g(void) /定义新的函数void g(void) ■ cout <<"Processing a void argument.In";} } void main(void){ ■ 94)i /I/调用函数void g(int) ■ g(4L); /调用函数void g(Iong) ■ cout<<"X="<<xj /访问整型变量x ■ g(void); //using之前无该原型,失败 ■}
4.2 名字空间 namespace ALPHA { //扩展定义ALPHA int x=5; //定义整型变量 x void g(int a) //定义函数原型void g(int) { cout << "Processing a int argument.\n"; } void g(void) //定义新的函数void g(void) { cout << "Processing a void argument.\n"; } } void main(void) { g(4); //调用函数void g(int) g(4L); //调用函数void g(long) cout<<"X="<<x; //访问整型变量 x g(void); //using之前无该 原型,失败 }