目录
- 一、程序及输出
- 1.1 命名空间用途: 解决名称冲突
- 1.2 命名空间内容
- 1.3 命名空间必须要声明在全局作用域下
- 1.4 命名空间可以嵌套命名空间
- 1.5 命名空间开放,可以随时给命名空间添加新的成员
- 1.6 命名空间可以是匿名的
- 1.7 命名空间可以起别名
- 二、分析与总结
一、程序及输出
1.1 命名空间用途: 解决名称冲突
game1.h
#include <iostream>
using namespace std;namespace KingGlory
{void goAtk();
}
game1.cpp
#include "game1.h"void KingGlory::goAtk()
{cout << "王者荣耀攻击实现" << endl;
}
game2.h
#include <iostream>
using namespace std;namespace LOL
{void goAtk();
}
game2.cpp
#include "game2.h"void LOL::goAtk()
{cout << "LOL攻击实现" << endl;}
main.cpp
#include<iostream>
using namespace std;
#include "game1.h"
#include "game2.h"//1、命名空间用途: 解决名称冲突
void test01()
{KingGlory::goAtk();LOL::goAtk();
}
int main(){test01();system("pause");return EXIT_SUCCESS;
}
输出:
1.2 命名空间内容
namespace A
{int m_A;void func();struct Person{};class Animal{};
}
编译器没有报错提示。
1.3 命名空间必须要声明在全局作用域下
1.4 命名空间可以嵌套命名空间
#include<iostream>
using namespace std;
namespace B
{int m_A = 10;namespace C{int m_A = 20;}
}
void test03()
{cout << "B空间下的m_A = " << B::m_A << endl;cout << "C空间下的m_A = " << B::C::m_A << endl;
}
int main(){test03();system("pause");return EXIT_SUCCESS;
}
输出:
1.5 命名空间开放,可以随时给命名空间添加新的成员
#include<iostream>
using namespace std;
namespace B
{int m_A = 10;namespace C{int m_A = 20;}
}
namespace B
{int m_B = 100;
}
void test04()
{cout << "B空间下的m_A = " << B::m_A << endl;cout << "B空间下的m_B = " << B::m_B << endl;
}
int main(){test04();system("pause");return EXIT_SUCCESS;
}
输出:
1.6 命名空间可以是匿名的
#include<iostream>
using namespace std;
namespace
{int m_C = 1000;int m_D = 2000; //当写的命名空间的匿名的,相当于写了 static int m_C = 1000; static int m_D = 2000;
}void test05()
{cout << "m_C = " << m_C << endl;cout << "m_D = " << ::m_D << endl;
}
int main(){test05();system("pause");return EXIT_SUCCESS;
}
输出:
1.7 命名空间可以起别名
#include<iostream>
using namespace std;
namespace veryLongName
{int m_E = 10000;void func(){cout << "aaa" << endl;}
}void test06()
{namespace veryShortName = veryLongName;cout << veryShortName::m_E << endl;cout << veryLongName::m_E << endl;veryLongName::func();
}
int main(){test06();system("pause");return EXIT_SUCCESS;
}
输出:
二、分析与总结
1、
命名空间用途
: 解决名称冲突
2、命名空间内容:
可以放 变量、函数、结构体、类…
3、命名空间 必须要声明在全局作用域下
4、命名空间可以嵌套命名空间
5、命名空间是开放的,可以随时给命名空间添加新的成员
6、命名空间可以是匿名的
7、命名空间可以起别名