C语言定义了3个层次的作用域:文件、函数和复合语句。
C++ 引入了类的作用域,类是在文件内的。
在不同的作用域中,可以定义相同名字的变量,互不干扰,编译器能够区别它们。
命名空间的概念:
C语言中,只有一个全局作用域,所有全局标识符共享一个作用域,因此绝对不能重名。
但随着系统越来越复杂,通常不会仅由一个人来开发,不同的人开发同一个系统,不可避免地会出现变量或函数的命名冲突,当将所有人的代码结合到一起时,就会因为变量或函数重名,导致编译失败。
因此,C++提出了命名空间的概念:
命名空间将全局作用域分成不同的部分;
不同命名空间的标识符可以同名,不会发生冲突;
命名空间可以嵌套。
namespace Name1
{
namespace Name2
{
/*...*/
}
/*...*/
}
全局作用域也叫默认命名空间。C++引入命名空间的概念,就是为了避免命名冲突的一种机制。
使用方式
C++的命名空间,有两种使用方式:
导入整个命名空间:using namespace name;
只导入命名空间中的某个变量:using name::variable
// 导入整个std命名空间到当前作用域
using namespace std;
// 只导入cout到当前作用域
using std::cout;
转自:https://zhuanlan.zhihu.com/p/156137900?from_voters_page=true
网友评论