一、作用域:
1.全局作用域 名字空间域(namespace)
2.局部作用域 块作用域 { ... }
3.类域 (class)
数据隐藏
int n = 1; int main(int argc, char const* argv[]) { int n = 2; { int n = 3; cout << "block n = " << n << endl; } cout << "main n = " << n << endl; return 0; }
out: block n = 3 main n = 2
1.在不同作用域可以定义多个相同名字的变量
2.内部的变量会隐藏外部的变量(从内到外查找)
二、命名空间
namespace
namespace class1 { string name = "zhangsan"; }; int main(int argc, char const* argv[]) { //cout << name << endl; error:undefined cout << class1::name << endl; return 0; }
1.命名空间是一个作用域的划分,通常用于区分项目中模块或组件
2.关键字namespace,可以分开使用
namespace class1 { string name = "zhangsan"; }; namespace class1 { string name = "limei"; };
3.名字空间可以嵌套
4.命名空间可以取别名
namespace c = class1;
5. 在命名空间内使用全局作用域变量 :: n = 1; 直接使用四饼操作符;
三、命名空间的引用
1. 直接使用命名空间::内容 (推荐)
2. 声明命名空间 using namespace xxx; 表示此行之后使用的都是xxx空间里面的内容,不用加四饼
3.声明只使用命名空间的部分变量或函数 using class1::n;