namespace

定义

有时候为了方便管理,将函数,变量等附加到一个命名空间里面

namespace N
{
    int value1;
    int value2;
}
//访问:
N::value=200;
using N::value2;
value2=100;

知识扩展*:使用using namespace N这种方式,用了这种方式,就相当于引入了N里面所有的关键字,可能会引起重名的麻烦,也可以使用using方式进行访问,这样下次访问时就不用加命名空间了

特别注意*:命名空间不能写在函数体里面

std::cout

这里std就是一个命名空间

知识扩展*:如果不想加std在前面,可以先声明 using std::cout,这样以后再调用cout就不用在前面加上std了,也可以直接声明using namspace std,不过不推荐这种用法

全局命名空间

所有具有链接属性的对象,只要没有定义命名空间,就默认在全局命名空间里,全局命名空间里成员访问不用显示指定,当局部变量覆盖了全局变量才需要指定,通过两个::访问全局命名空间对象

const int value{0};
int main()
{
    int value{1};
    std::cout<<::value;
}

这里输出为0

命名空间的扩展

namespace N
{
    int value0;
}
//对N进行扩展
namespace N
{
    int value01;
}

在N中添加成员如上所示

命名空间内的声明和定义

namespace N
{
    extern int value02;//仅声明变量
    void test();//仅声明函数
}
定义的第一种写法:
namespace N
{
    value02 {4 };
    test()
    {
    }
}
定义的第二种写法
int N::value02 {5};
int N::test(){};

命名空间的嵌套

namespace N
{
    namespace M
        {
            int value01{0};
        }
}

它的使用

M::N::value01 {5};

命名空间的别名

给上面的代码起别名

namespace a=M::N
a::value01 {6}  //调用N里面的变量

未命名命名空间

a.cpp中
namespace 
{
    void Test()
        {

        }
}
b.cpp中
namespace 
{
    void Test()
        {
            std::cout<<"1";
        }
}

运行后,两个test互不干扰,因为未命名空间里面的内容一律为内部链接属性,包括extern声明的内容,未命名空间里的内容仅仅在本转换单元内有效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值