QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

基于名字空间的使用方法-苏州安嘉科技

网络 2023-01-21 09:10

首先明晰一下要使用名子空间的目的是为了避免名子冲突。

一、访问名子空间中元素的3种形式:

1、可以自己去定义一些名子空间:

namespace NameSpace1
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace1的。
    int x=0;//是NameSpace1里边所包含的变量。
}
namespace NameSpace
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace2的。
}

2、自定义名子空间的使用:使用域解析符来调用

#include
namespace NameSpace1
{

    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace1的。
}
namespace NameSpace
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace2的。
}
void fun()
{
}//该fun函数是属于全局的
int main()
{
    //使用域解析符来调用
    NameSpace1::fun();//我调用的是NameSpace1中的fun函数。
    NameSpace2::x;//使用x。 
    NameSpace2::fun();//我调用的是NameSpace1中的fun函数。

访问名字空间里的内容_访问qq空间不留痕迹_qq空间访问密码破解

}

3、自定义名子空间的使用:使用using句子来调用

#include
namespace NameSpace1
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace1的。
}
namespace NameSpace
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace2的。
}
void fun()
{

qq空间访问密码破解_访问名字空间里的内容_访问qq空间不留痕迹

}//该fun函数是属于全局的 int main() { //使用using语句来调用 using namespace NameSpace1; //这样子来写之后对于main函数内部里边他既能够看到全局名字空间里边所有的函数,又能够看到NameSpace1里边所有的函数 fun();//此时调用fun()函数,系统会自动分析说首先在全局名字空间里边查找没有fun()这个函数,这个时候因为使用的是using namespace NameSpace1这个时候他就会在using namespace NameSpace1里边查找fun就可以使用了。 }

4、自定义名子空间的使用:使用名子空间别称

#include
namespace NameSpace1
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace1的。
}
namespace NameSpace
{
    void  fun()
    {

    }//该fun函数是属于名字空间NameSpace2的。
}
void fun()
{
}//该fun函数是属于全局的
int main()
{
    namespace ns1=NameSpace1;//相当于对NameSpace1这个长的名字,赋予一个简短的别名ns1;一个昵称。
    ns1::fun();//这样就是使用的是NameSpace1中的fun函数。
    
}

注意:如果把using namespace NameSpace1置于函数外边,

#include
namespace NameSpace1
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace1的。
}

namespace NameSpace
{
    void  fun()
    {
    }//该fun函数是属于名字空间NameSpace2的。
}
void fun()
{
}//该fun函数是属于全局的
using namespace NameSpace1;//如果把它放在main函数外边,那么接下来我们所有的代码再去使用的时候,他都会去从全局名字空间和NameSpace1里边去查找;//PS:但是这种方式实际上是不推荐的,这样的话实际上将NameSpace1里边所有的内容都暴露给下边了,那么同样的我们会引入名字冲突,就无法起到避免名字冲突的作用。比如如果我们在一个头文件中去这样使用的话,是非常危险的,相当于所有通过include引用这个头文件的源文件都会存在名字冲突的潜在的可能性,因为我们NameSpace1里边定义的东西和全局名字里边定义的东西都可见。这个时候更容易引起冲突。
int main()
{
   fun();//这样就会引起冲突,因为不知道你是使用的全局名字里边的fun函数,还是使用的是NameSpace1中的fun函数。
    
}

总结:最安全的使用方式就是使用::,这样不会出现冲突。

二:std名子空间

std是C++标准库所定义的名子空间,std上面所包含的都是C++标准库上面所包含的东西。

三、名字空间与名称改编(name mangling)

我们的整个程序在编译完了以后,会编译出.o文件,.o文件以后会进行链接,链接成可执行文件;(链接是一个连接器把各个的目标文件和源文件给他链接上去)

上一篇:什么是网站优化SEO中的锚文本链接呢?? 下一篇:没有了
相关文章