对namespace的理解。
C++中为什么使用命名空间namespace,举个例子,一个数学老师带着两个班级的课,每个班级里面都有一个数学课代表。现老师让你去把数学课代表找来,此时你就会有疑问是找哪个班级的。这里就需要命名空间来区分,比如一班的数学课代表。
当然在C++程序中也会出现同样的问题,比如你正在调用一个名为function()的函数,此时有两个可用的库中都包含这个函数,所以编译器就不知道你到底需要哪一个。命名空间就是用来区分不同类或者库的同名函数。命名空间的本质就是定义了一个范围,我们找一个东西,需要现确定它所在的范围。
定义名为class_one和class_two的命名空间,并调用。
代码:
#include <iostream>
using namespace std;
//命名空间一班
namespace class_one {
//函数,类名等等
void student() {
cout << ’’ Xiao Ming is the representative of mathematics class’’ << endl;
}
}
//命名空间二班
namespace class_two {
void student() {
cout << ’’ Xiao hong is the representative of mathematics class’’ << endl;
}
}
int main () {
class_one::student();
class_two::student();
return 0;
}
在student函数内用了两个命名空间(namespace),输出的结果是:
’’ Xiao Ming is the representative of mathematics class’’
’’ Xiao hong is the representative of mathematics class’’
使用using关键词也可以指定特定的命名空间。
#include <iostream>
using namespace std;
//命名空间一班
namespace class_one {
//函数,类名等等
void student() {
cout << ’’ Xiao Ming is the representative of mathematics class’’ << endl;
}
}
//命名空间二班
namespace class_two {
void student() {
cout << ’’ Xiao hong is the representative of mathematics class’’ << endl;
}
}
//这里使用using的方法
using namespace class_one;
int main () {
student(); //这里直接调用student()即可,不必指明所属命名空间
return 0;
}
输出结果:
’’ Xiao Ming is the representative of mathematics class’’
网友评论