命名空间

namespace Li{  //小李的变量定义

    FILE* fp = NULL;

}

namespace Han{  //小韩的变量定义

    FILE* fp = NULL;

}

Li::fp = fopen("one.txt", "r");  //使用小李定义的变量 fp

Han::fp = fopen("two.txt", "rb+");  //使用小韩定义的变量 fp

 

除了直接使用域解析操作符,还可以采用 using 关键字声明,例如:

using Li::fp;

fp = fopen("one.txt", "r");  //使用小李定义的变量 fp

Han :: fp = fopen("two.txt", "rb+");  //使用小韩定义的变量 fp

代码的开头用using声明了 Li::fp,它的意思是,using 声明以后的程序中如果出现了未指明命名空间的 fp,就使用 Li::fp;但是若要使用小韩定义的 fp,仍然需要 Han::fp

 

using 声明不仅可以针对命名空间中的一个变量,也可以用于声明整个命名空间,例如:

using namespace Li;

fp = fopen("one.txt", "r");  //使用小李定义的变量 fp

Han::fp = fopen("two.txt", "rb+");  //使用小韩定义的变量 fp

如果命名空间 Li 中还定义了其他的变量,那么同样具有 fp 变量的效果。在 using 声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用命名空间 Li 中的变量。

 

命名空间内部不仅可以声明或定义变量,对于其它能在命名空间以外声明或定义的名称,同样也都能在命名空间内部进行声明或定义,例如类、函数、typedef#define 等都可以出现在命名空间中。

posted @ 2025-03-05 17:10  孤情剑客  阅读(241)  评论(0)    收藏  举报