1. 命名空间污染:名字冲突。
2. 命名空间定义:namespace space_name{…}
定义可以是不连续的,命名空间由它分离定义部分的总和构成,是累积的。
3. 可以用作用域操作符引用全局命名空间的成员。因为全局命名空间是隐含的,没有名字,可以直接用::member_name引用。
4. 嵌套命名空间中的名字遵循常规规则,内存空间的名字屏蔽外层空间的重名成员。
5. 未命名的命名空间是指在定义时没有给定名字的空间。未命名的空间可以在给定文件中不连续,但是不能跨越文件。如果两个文件都包含未命名的空间,则两个空间不相关。
6. 如果头文件定义了未命名的空间,那么,在每个包含该头文件的文件中,该命名空间中的名字将定义为不同的局部变量、函数。
7. 未命名的空间可用来取代C语言的static声明。在C中,声明为static的局部实体,在其他文件中不可见。
8. Using声明是引入某个命名空间中的某个实体,而using指示则是把整个命名空间的名字全部引入。应该多用using声明,避免using指示。
9. 命名空间别名,namesspace A=B;
10. Using声明可以出现在全局作用域、局部作用域和命名空间作用域中。类作用域中的using声明局限于被定义类的基类中的名字。
11. 当一个类声明友元函数时,函数的声明不必是可见的。如果不存在可见的声明,友元函数有将该函数或类的声明放入外围作用域的作用。
12. 如果using声明在已经有同名且同形参的函数作用域中引入函数,则报错。如果形参不同,则会引入成功,增加该函数名的重载函数集合。