概述
命名空间namespace
C++命名空间的使用是为了防止名称冲突,引入关键字namespace可以更好地控制标识符的作用域。
其语法特点如下:
1. 命名空间下可以放符号常量、函数、变量、结构体、类和对象等等。
2. 命名空间只能全局范围内定义
3. 命名空间可以嵌套命名空间
4. 命名空间是开放的,即可以随时把新的成员加入已有的命名空间中
5. 无名命名空间(匿名命名空间)意味着命名空间中的标识符只能在文本文件内访问,相当于给这个标识符加上了static, 使其可以作为内部连接
6. 命名空间可以别名
#define _CRI_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include "game1.h"
#include "game2.h"
// namespace命名空间主要用途 用来解决命名冲突的问题
// 1. 命名空间下可以放函数、变量、结构体、类
// 2. 命名空间必须定义在全局作用域下
void test01()
{
LOL::goAtk();
KingGlory::goAtk();
}
// 3.命名空间可以嵌套命名空间
namespace A
{
int m_A = 20;
void func();
struct Person
{
};
class Animal{};
namespace B {
int m_A = 10;
}
}
void test02()
{
cout << "作用域B下的m_A为:" << A::B::m_A << endl;
}
//4. 命名空间是开放的,可以随时往原先命名空间添加内容
namespace A//此命名空间回和上面的命名空间A合并
{
int m_B = 1000;
}
void test03()
{
cout << "A::下的m_A为:" << A::m_A << "m_B is:" << A::m_B << endl;
}
//5. 命名空间和匿名(匿名命名空间)
namespace
{
int m_C = 0;
int m_D = 0;
}
//当写了无命名空间,相当于写了 static int m_C; static int m_D;
//只能在当前文件内使用
//6. 命名空间可以别名
namespace veryLongName
{
int m_A = 0;
}
void test04()
{
//起别名
namespace veryShortName = veryLongName;
cout << veryLongName::m_A << endl;
cout << veryShortName::m_A << endl;
}
int main(){
// test01();
// test02();
test03();
// test04();
system("pause");
return 0;
}
#include "game1.h"
void LOL::goAtk()
{
cout << "LOL攻击实现" << endl;
}
#include "game2.h"
void KingGlory::goAtk()
{
cout << "king攻击实现" << endl;
}
Using编译指令
using指令用来打开命名空间,当打开多个命名空间时,其使用可能会造成二义性。在这时,在代码中使用作用域解析运算符能很好的避免二义性
#define _CRI_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
namespace KingGlory
{
int sunwukongid = 10;
}
void test01() {
int sunwukongid = 20;
//using 声明
//写了using声明后,下面这行代码说明以后看到的sunwukongid 是KingGlory下的
//但是,编译器又有就近原则
// 此时出现了二义性
//得注意避免二义性
//using KingGlory::sunwukongid;
cout << sunwukongid << endl;
}
//using
void test02() {
// int sunwukongid = 20;
using namespace KingGlory; //打开房间
//如果打开多个房间,也要避免二义性
cout << sunwukongid << endl;
}
int main()
{
test02();
system("pause");
return EXIT_SUCCESS;
}
最后
以上就是细心彩虹为你收集整理的一. C++: 命名空间namespace与using指令的全部内容,希望文章能够帮你解决一. C++: 命名空间namespace与using指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复