目录
命名冲突
域
域作用限定符::
namespace关键字
using关键字
iostream头文件和std命名空间
命名冲突
#include
int rand = 10;
int main()
{
printf("hello world\n");
printf("%d\n", rand);
return 0;
}
#include
#include
int rand = 10;
int main()
{
printf("hello world\n");
printf("%d\n", rand);
return 0;
}
发现不包含stdlib头文件之前的代码可以正常执行,包含了stdlib头文件的代码会报错:
这是因为rand是stdlib头文件中一个被定义的函数,而int rand是对rand函数的重定义,因此可以得到这样的结论:全局变量可能会出现命名冲突的问题
域
基本概念:包括类域、全局域、局部域、命名空间域、访问两个域中的同名变量时,采用就近原则
全局作用域:变量或函数在整个程序中可见
局部作用域:变量或函数在特定代码块内可见(如函数体、循环等)
类作用域:变量或函数在类的内部可见
命名空间作用域:变量或函数在特定命名空间内可见,使用namespace定义的作用域
一般情况下程序的查找顺序:局部作用域->类作用域->命名空间域->全局域