namespace MyNamespace
{
int add(int a, int b)
{
return a + b;
}
struct Node
{
struct Node* next;
int data;
};
int i = 10;
}
int main()
{
int i = 20;//全局域
return 0;
}
#include<iostream>
#include<stdio.h>
int i = 20;
namespace MyNamespace
{
int i = 10;
int Add(int a, int b)
{
return a + b;
}
struct Node
{
Node* next;
int data;
};
}
int main()
{
printf("%d", ::i);//访问全局中的i=20;
printf("%d", MyNamespace::i);//访问的是命名空间中的i=10;
int ret = MyNamespace::Add(1, 2);
struct MyNamespace::Node st;
return 0;
}
嵌套
namespace只能定义在全局,还可以嵌套定义。
cpp复制代码
namespace A
{
namespace xiaosun
{
int i = 10;
}
namespace xiaomin
{
int a = 10;
}
}
int main()
{
printf("%d", A::xiaomin::a);//域访问也跟前面的类似
printf("%d", A::xiaosun::i);
return 0;
}
同名
在同一个工程中我们可以定义多个名称相同的命名空间,并不会冲突,在编译时命名空间会自动合并 。
cpp复制代码
namespace MyNamespace
{
int i = 10;
}
namespace MyNamespace
{
int j = 10;
}
#include<iostream>
using namespace std;
//全缺省
void Func1(int a = 100, int b = 200, int c = 300)
{
cout << "a =" << a << endl;
cout << "b =" << b << endl;
cout << "c =" << c << endl;
}
int main()
{
//全缺省参数
Func1();//不传参数
cout << endl;
Func1(10,20);//传一部分参数
cout << endl;
Func1(10,20,30);//全传
return 0;
}
打印结果:
a =100
b =200
c =300
a =10
b =20
c =300
a =10
b =20
c =30
半缺省
半缺省就是部分形参给缺省值。C++规定:半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。
cpp复制代码
//半缺省
void Func2(int a, int b = 200, int c = 300)
{
cout << "a =" << a << endl;
cout << "b =" << b << endl;
cout << "c =" << c << endl;
}
int main()
{
//半缺省
Func2(10,20);//传一部分参数
cout << endl;
Func2(10,20,30);//全传
return 0;
}