命名空间的作用:避免名字冲突和解决命名空间污染问题
命名空间的定义
namespace namespace_name {
//declarations
}
例:
/*
file:my.h
author:longsy
*/
//declare namespace My_lib
namespace My_lib {
void describe();
}
一般命名空间的声明放在头文件中,而实现则放在源文件中
命名空间也是一个作用域,实现命名空间的函数时,要使用作用域操作符(::)
/*
file:my.c
author:longsy
*/
#include "my.h"
void My_lib::describe()
{
//do something...
}
引入某入命名空间的方法
1.using 声明
/*I have defined my namespace in the file named "my.h"
and I also have implemented the namespace in the "my.c"
*/
/*
file:test1.c
author:longsy
*/
#include "my.h"
//using声明,引入describe函数,只需要引入名字,不需要带括号和参数
using My_lib::describe; //也可以将该语句放入函数中
void test1()
{
describe(); //My_lib::describe();
}
2.using 指令
/*I have defined my namespace in the file named "my.h"
and I also implemente the namespace in the "my.c"
*/
/*
file:test2.c
author:longsy
*/
#include "my.h"
//using指令,引入My_lib空间中的所有名字
using namespace My_lib; //也可以将该语句放入函数中
void test2()
{
describe(); //My_lib::describe();
}
一个命名空间是可以分散在多个文件中,在不同文件中的命名空间定义是累积的
向一个已存在命名空间引入新的成员
#include "my.h" //先引入命名空间所声明的头文件
namespace My_lib {
//new members...
}
无名命名空间:将命名空间局限于一个文件中
namespace {
//declarations
}
在同一个文件中可以直接使用无名命名空间的名字而无需使用作用域操作符或者using声明和指令
命名空间的嵌套:可以在一个命名空间中声明另一个命名空间
例:
namespace A{
int i; //A::i
int j;
namespace B{
int i;
int k=j;//A::j
} //end of B scope
int h = i; //A::i
} // end of A scope
引用嵌套里的名字时,使用多层作用域操作符
using A::B::k;
或 using namespace A::B;
命名空间别名:一般是为了方便使用,给较长的命名空间取一个较短的命名空间来使用
取别名的语法:
namespace 源空间名 = 别名;
能使用别名来访问源命名空间里的成员,但不能为源命名空间引入新的成员
命名空间函数重载:如果从多个命名空间里引入同名而不同参的函数,且它们满足构成重载的条件,则构成重载
例:
//a.h
namespace A{
void f(char) {//...}
}
//b.h
namespace B{
void f(int) {//...}
}
//test.c
#include "a.h"
#include "b.h"
void test()
{
using A::f;
using B::f;
f('a');//A::f(char)
f(10);//B::f(int)
}
分享到:
相关推荐
C++命名空间理解及小结,命名空间的使用方法。
C++ using namespace std 详解 所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
C++命名空间 C++ Builder代码演示
C++命名空间自定义及使用(附完整程序)
主要介绍了C++ 命名空间的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个头文件:
C++的命名空间是什么?刚开始学习C++,一文清晰明了的分清楚命名空间的概念。后续持续更新自己的C++笔记
对C++的一些概念进行梳理
C++ 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 C++ ...
.
.
C++NamespaceTool是一个用于的简单 C++ 命名空间重构包。安装可以使用带有安装包选项的来安装C++NamespaceTool 。描述在 C++ 编程中, using namespace std编写被认为是一种不好的做法。 首选方法是在顶部某处显式...
主要介绍了C++命名空间实例解析,对C++程序员来说是非常重要的知识点,需要的朋友可以参考下
主要介绍了C++命名空间5种常见用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
标准C++引入命名空间。基本知识。有需要的可以下载。
名字空间是C++提供的一种解决符号名字冲突的方法。 一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体。 通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互...
今天小编就为大家分享一篇关于C++命名空间namespace的介绍与使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
protobuf 命名空间,包