C++命名空间
什么是命名空间
namespace 空间名
{
//变量
//函数
//结构体
//类
}
//用namespace 声明一个东西
可以提高标识符使用,可以避免命名污染
如何创建命名空间
namespace 空间名
{
//变量
//函数
//结构体
//类
}
//用namespace 声明一个东西
怎么访问命名空间
- :: :作用域分辨符
- 访问空间中的成员: 空间名::成员名
- 用来区分全局变量和局部变量
#include <iostream>
#include <cstdio>
namespace MM
{
int age = 1;
void print()
{
printf("MM\n");
}
}
namespace Boy
{
int age = 2;
}
int g_num = 1001;
int main()
{
printf("%d\n", MM::age);
printf("%d\n", Boy::age);
int g_num = 1;
printf("全局变量:%d\n", ::g_num);
return 0;
}
#include <iostream>
#include <cstdio>
namespace MM
{
int age = 1;
void print()
{
printf("MM\n");
}
}
namespace Boy
{
int age = 2;
}
int g_num = 1001;
int main()
{
printf("%d\n", MM::age);
printf("%d\n", Boy::age);
int g_num = 1;
printf("全局变量:%d\n", ::g_num);
MM::print();
using namespace MM;
print();
using namespace Boy;
printf("%d\n", Boy::age);
printf("%d\n", MM::age);
return 0;
}
命名空间嵌套
namespace A
{
int a=1;
namespace B
{
int b = 1;
}
}
void test()
{
//剥洋葱
A::a = 1;
A::B::b = 2;
using namespace A::B;
b = 3;
}
先声明后实现
//其他写法: 先声明后实现的一种写法
namespace Data
{
void print();
struct student;
}
//必须空间名限定
void Data::print()
{
}
struct Data::student
{
int age;
int num;
};
标准的命名空间std
- C++所有的函数和类都是属于标准命名空间
- 不写using namespace std; 意味着所有C++标准库中的东西都需要加上std::
using namespace std; //习惯性的操作
C++命名空间
什么是命名空间
namespace 空间名
{
//变量
//函数
//结构体
//类
}
//用namespace 声明一个东西
可以提高标识符使用,可以避免命名污染
如何创建命名空间
namespace 空间名
{
//变量
//函数
//结构体
//类
}
//用namespace 声明一个东西
怎么访问命名空间
- :: :作用域分辨符
- 访问空间中的成员: 空间名::成员名
- 用来区分全局变量和局部变量
#include <iostream>
#include <cstdio>
namespace MM
{
int age = 1;
void print()
{
printf("MM\n");
}
}
namespace Boy
{
int age = 2;
}
int g_num = 1001;
int main()
{
printf("%d\n", MM::age);
printf("%d\n", Boy::age);
int g_num = 1;
printf("全局变量:%d\n", ::g_num);
return 0;
}
#include <iostream>
#include <cstdio>
namespace MM
{
int age = 1;
void print()
{
printf("MM\n");
}
}
namespace Boy
{
int age = 2;
}
int g_num = 1001;
int main()
{
printf("%d\n", MM::age);
printf("%d\n", Boy::age);
int g_num = 1;
printf("全局变量:%d\n", ::g_num);
MM::print();
using namespace MM;
print();
using namespace Boy;
printf("%d\n", Boy::age);
printf("%d\n", MM::age);
return 0;
}
命名空间嵌套
namespace A
{
int a=1;
namespace B
{
int b = 1;
}
}
void test()
{
//剥洋葱
A::a = 1;
A::B::b = 2;
using namespace A::B;
b = 3;
}
先声明后实现
//其他写法: 先声明后实现的一种写法
namespace Data
{
void print();
struct student;
}
//必须空间名限定
void Data::print()
{
}
struct Data::student
{
int age;
int num;
};
标准的命名空间std
- C++所有的函数和类都是属于标准命名空间
- 不写using namespace std; 意味着所有C++标准库中的东西都需要加上std::
using namespace std; //习惯性的操作
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
namespace MM
{
int age = 1;
void print()
{
printf("MM\n");
}
}
namespace Boy
{
int age = 2;
}
int g_num = 1001;
namespace A
{
int a=1;
namespace B
{
int b = 1;
}
}
void test()
{
A::a = 1;
A::B::b = 2;
using namespace A::B;
b = 3;
}
namespace Data
{
void print();
struct student;
}
void Data::print()
{
}
struct Data::student
{
int age;
int num;
};
int main()
{
std::string ss;
printf("%d\n", MM::age);
printf("%d\n", Boy::age);
int g_num = 1;
printf("全局变量:%d\n", ::g_num);
MM::print();
using namespace MM;
print();
using namespace Boy;
printf("%d\n", Boy::age);
printf("%d\n", MM::age);
return 0;
}
|