前言:
目前朋友们对“phpusenamespace”都比较重视,我们都需要剖析一些“phpusenamespace”的相关知识。那么小编也在网上搜集了一些对于“phpusenamespace””的相关文章,希望朋友们能喜欢,看官们快快来了解一下吧!#include<iostream>
using namespace std;
// 背景:随着工程量的增加,变量命名上不可避免的会出现重名
// namespace 是一个关键字
意义:防止名称冲突(在两个不同的命名空间中,即使2个变量名相同,也是2个不同的变量)
// 在实际工作中,基本都使用标准命名空间,很少人使用这个技巧,但是需要了解这些知识点
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 1、创建一个命名空间
namespace A
{
int a = 10;
}
namespace B
{
int a = 20;
}
void test01()
{
cout << "A::a = " << A::a << endl; // A::a = 10 // :: 作用域运算符
cout << "B::a = " << B::a << endl; // B::a = 20
// 变量名相同,但却是不同的两个变量
// 相似: C 中static修饰的全局变量,其作用域只是本文件
// 在2个不同的文件中定义相同的静态全局变量,也是2个不同的变量
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 2、命名空间只能全局范围内定义,不能定义在函数内部
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 3、命名空间内,可以存放 变量、 函数、 结构体、 类 ;也可以嵌套其他的命名空间
namespace C
{
int c = 10;
void func() {};
struct Person {};
class Animal {};
namespace D
{
int d = 20;
}
}
void test03()
{
cout << "C::c = " << C::c << endl; // C::c = 10
cout << "D::d = " << C::D::d << endl; // D::d = 20
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 4、命名空间是开放的,即可以随时把新的成员加入已有的命名空间中
namespace A // 原先A中有 int a = 10
{
int b = 10;
}
void test04()
{
cout << "b = " << A::b << endl; // b = 10 在命名空间A 中加入了 int b =10
cout << "a = " << A::a << endl; // 原值存在,说明这种添加是合并追加,而不是覆盖
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 5、命名空间可以匿名(但一般不这样使用)
namespace
{
int e = 10; // 这种情况相当于定义了 静态全局变量
}
void test05()
{
cout << "e = " << e << endl;
}
//6、命名空间是可以起别名的
namespace veryLongName
{
int a = 10;
}
void test06()
{
namespace vln = veryLongName;
cout << "a = " << veryLongName::a << endl;
cout << "a = " << vln::a << endl; // 二者结果是相同的
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
//test01();
//test03();
//test04();
//test05();
test06();
return 0;
}
****************************************************************************************
1、创建
namespace 空间名称
{
变量; 函数; 结构体; 类; 其他命名空间
}
注意:不同命名空间中相同的变量等,也是完全不同且独立的
因此:命名空间的意义是防止一些名称冲突
****************************************************************************************
2、命名空间只能在全局范围内创建
3、命名空间内可以定义: 变量;函数;结构体;类 (也可以定义后直接初始化)
4、命名空间内可以嵌套其他命名空间
5、命名空间开放的:可以随时的添加内部元素,并且是追加添加,而不是覆盖
6、命名空间可以匿名:即不给命名空间起名字,内部定义的变量等同于静态全局变量
7、命名空间可以起别名 namespace newName = oldName;
标签: #phpusenamespace