c++ namespace_C++知识点 3:namespace 命名空间

#include
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;

925032a63a2cde6876c675e519944274.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值