namespace Li{ //小李的变量定义 FILE* fp = NULL; } namespace Han{ //小韩的变量定义 FILE* fp = NULL; }小李与小韩各自定义了以自己姓氏为名的命名空间,此时再将他们的 fp 变量放在一起编译就不会有任何问题。
命名空间有时也被称为名字空间、名称空间。namespace 是C++中的关键字,用来定义一个命名空间,语法格式为:
namespace name{
//variables, functions, classes
}
name
是命名空间的名字,它里面可以包含变量、函数、类、typedef、#define 等,最后由{ }
包围。Li::fp = fopen("one.txt", "r"); //使用小李定义的变量 fp Han::fp = fopen("two.txt", "rb+"); //使用小韩定义的变量 fp
::
是一个新符号,称为域解析操作符,在C++中用来指明要使用的命名空间。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 namespace Li; fp = fopen("one.txt", "r"); //使用小李定义的变量 fp Han::fp = fopen("two.txt", "rb+"); //使用小韩定义的变量 fp如果命名空间 Li 中还定义了其他的变量,那么同样具有 fp 变量的效果。在 using 声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用命名空间 Li 中的变量。
#include <stdio.h> //将类定义在命名空间中 namespace Diy{ class Student{ public: char *name; int age; float score; public: void say(){ printf("%s的年龄是 %d,成绩是 %f\n", name, age, score); } }; } int main(){ Diy::Student stu1; stu1.name = "小明"; stu1.age = 15; stu1.score = 92.5f; stu1.say(); return 0; }运行结果:
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有