C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为namespace
。
在团队开发中,命名的使用就会体现出来:例如在同一个工程里
int flag = 1; //小明声明的变量
// …… //中间间隔若干行代码
bool flag = true; //小红声明的变量
2个人的编程习惯不一样,一个偏爱int 变量进行逻辑判断,另一个偏爱bool 逻辑判断,如果把这2个变量放在同一个函数编译?
编译不通过。
哪怎么解决呢?
答:可以使用命名空间解决类似上面的命名冲突问题。
例如:
namespace Ming{ //小明的变量声明
int flag = 1;
}
namespace Hong{ //小红的变量声明
bool flag = true;
}
如果再次放到同一个函数编译是可以通过的。这里有个注意点,就是要指定一个具体是哪个 “命名空间”。
指定所使用的变量时需要用到 “::” 操作符,“::” 操作符是域解析操作符。例如:
Ming::flag = 0; //使用小明定义的变量flag
Hong::flag = false; //使用小红定义的变量flag
命名空间完整示例代码:
#include <iostream>
//将类定义在命名空间中
namespace myName{
class Student{
public:
char *name;
int age;
float score;
public:
void say(){
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
};
}
int main(int argc, const char * argv[]) {
myName::Student stu1; //
stu1.name = "小明";
stu1.age = 6;
stu1.score = 98.5;
stu1.say();
return 0;
}