【Cpp】命名空间
Cpp 的命名空间机制是用来解决复杂项目中名字冲突的问题。
例如,Cpp 标准库的所有内容都定义在 std 命名空间中,如果定了一个 cin 变量,则可以通过 cin 访问自定义的 cin 变量,通过 std::cin(:: 是作用域操作符)访问标准库的 cin 对象,而不用担心产生冲突。
声明命名空间
用关键字 namespace 声明命名空间:
namespace 命名空间 {
命名空间内部成员
}
使用 命名空间::成员名;可以访问命名空间内的函数或变量。
举例:
#include <iostream>
namespace A {
namespace B { //命名空间可以嵌套
void func() {
std::cout << "B" << std::endl;
}
}
void func() {
std::cout << "A" << std::endl;
B::func();
}
}
void func() {
A::func();
A::B::func();
}
int main() {
func();
return 0;
}
using 指令
声明了命名空间后,如果在命名空间外部访问命名空间内的成员,每次都要在成员名前面加上 命名空间:: 会很繁琐,using 指令可以简化这一操作。
//方式一:省略“某个”成员名前面的命名空间,直接通过成员名访问成员
using 命名空间::成员名;
//方式二:直接通过成员名访问命名空间内“任何”成员
using namespace 命名空间;
举例:
#include <iostream>
using std::cin;
//using namespace std;
int main() {
int a;
cin >> a;
return 0;
}
注意:using 指令可能会造成命名冲突导致编译错误。
#include <iostream>
using namespace std;
int main() {
int a, cin;
//当有本地同名变量后,优先使用本地,cin 被认为是 int 型,编译错误
cin >> a;
return 0;
}
本文来自博客园,作者:hzyuan,转载请注明原文链接:https://www.cnblogs.com/hzyuan/p/17965052

浙公网安备 33010602011771号