解决命名冲突
库函数/项目组中成员与自己定义的变量名冲突了。
里面几乎都可以定义(函数,类,基本数据类型)
域作用限定符::
局部优先
空白域默认全局域,因此如果全局a与局部a同时存在,可以::a来访问全局a
作用域与生命周期问题:
形成命名空间域,在全局范围内定义:属于全局的,生命周期也是全局的
嵌套命名空间定义
//. 命名空间可以嵌套
namespace N2
{
int a;
int b;
int Add(int left, int right)
{
return left + right;
}
namespace N3
{
int c;
int d;
int Sub(int left, int right)
{
return left - right;
}
}
}
有助于分类。
命名空间的使用有三种方式:
1.加命名空间名称及作用域限定符
int main()
{
//A是个命名空间
printf("%dn", A::a);
return 0;
}
2.使用using将命名空间中成员引入---常用
using A::b;
int main()
{
printf("%dn", N::a);
printf("%dn", b);
return 0;
}
3:使用using namespace 命名空间名称引入---不要冲突,一般只放单独的几个
using namespce A;
int main()
{
printf("%dn", A::a);
printf("%dn", b);
Add(1, 2);
return 0;
}
缺省
全缺省与半缺省
重点:半缺省
注意点
void Test(int a, int b = 11, int c = 22)
{
cout<<"a = "<
因为你使用的时候,总不能这样写Test( ,1,2);...这样是编译不过去的。



