码迷,mamicode.com
首页 > 其他好文 > 详细

命名空间

时间:2020-04-06 21:01:28      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:ons   mes   函数名   namespace   函数   函数调用   打印   pac   告诉   

如果我有两个库,两个库中都含有一个函数名字叫fun()

那么当我在主函数调用 fun() 的时候编译器就没法判断我想调用的是哪一个函数

所以我们可以用命名空间去区分。

 

我们先定义一个命名空间

namespace space1
{
    void fun()
    {
        cout<<"in space 1"<<endl;
    }
}

这段代码就是将函数fun() 定义在了一个叫 space1 的命名空间里

类似地,我们再写一个fun()

namespace space2
{
    void fun()
    {
        cout<<"in space 2"<<endl;
    }
}

 

我们可以这样调用这两个同名的函数

int main(int argc, char const *argv[])
{
    space1::fun();
    space2::fun();
    
}

输出如下:

in space 1
in space 2

 

 

可以像 using namespace std 那样,告诉编译器一个默认的值

using namespace space1;

int main(int argc, char const *argv[])
{
    fun();

}

打印结果就只是space1里面的函数了

in space 1

 

 

也可以嵌套命名空间

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

使用

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;
 
// 访问 namespace:name1 中的成员
using namespace namespace_name1

 

 

示例:

namespace space2
{
    void fun()
    {
        cout<<"in space 2"<<endl;
    }
    namespace space3
    {
        void fun()
        {
            cout<<"in space 2::3"<<endl;
        }
    }
}


int main(int argc, char const *argv[])
{
    space2::space3::fun();

}

或者

using namespace space2::space3;

int main(int argc, char const *argv[])
{
    fun();

}

 

命名空间

标签:ons   mes   函数名   namespace   函数   函数调用   打印   pac   告诉   

原文地址:https://www.cnblogs.com/qifeng1024/p/12643987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!