c++命名空间---namespace
C++ 命名空间
C++ 应用程序中。例如,您可能会写一个名为 func() 的函数,在另一个可用的库中也存在一个相同的函数 func()。这样,编译器就无法判断您所使用的是哪一个 func() 函数。
因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。
定义命名空间
命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:
name::code; // code 可以是变量或函数,name是命名空间的名字
eg:
#define _CRT_SECURE_NO_WARNINGS #include<iostream>
namespace space_test1
{
typedef int T;
int a = ;
void fuc(void)
{
std::cout << "I am space_test1 \n";
}
} namespace space_test2
{
typedef double T;
int a = ;
void fuc(void)
{
std::cout << "I am space_test2\n";
}
}
int main()
{
//通过命名空间的不同,可以使用相同的函数,变量,类型
space_test2::T high = 1.1;
space_test1::T age = ;
space_test2::fuc();
space_test1::fuc();
std::cout << "high=" << high << std::endl;
std::cout << "age="<< age<<std::endl;
std::cout << "space_test1::a=" << space_test1::a << std::endl;
std::cout << "space_test2::a=" << space_test2::a << std::endl;
system("pause");
return ;
}
using 指令
您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

为什么我们不推荐using namespace ...的做法:

命名空间使用这样直接的声明,破坏了它想要解决的同名函数,变量,类等问题,虽然在不引起二义性的情况下,我们会方便一些,因为可以少输入几个字符,但是,在不能保证是否有相同函数,变量,类的情况下,还是使用命名空间前缀更合适。
c++命名空间---namespace的更多相关文章
- PHP 命名空间(namespace)
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- Atitit 深入理解命名空间namespace java c# php js
Atitit 深入理解命名空间namespace java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...
- PHP 使用命名空间(namespace),实现自动加载
示例: #/DB/MySql.class.php也就是DB文件夹下有MySql.class.php文件 namespace DB; class MySql { public function __co ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- PHP命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- include与__autoload与命名空间namespace与PSR4详解
1. include, require, include_once, require_once include和require是PHP中引入源文件最基本的用法,其他例如__autoload, name ...
- PHP深入浅出之命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- 第十一节,命名空间namespace
1,命名空间的定义 命名空间可以把不同的方法分散到不同的文件去实现,如果你会objective-C,他的作用和里面的类目有异曲同工之妙.当然了也有很多不同的地方,首先要明白的是,命名空间并不是一个类, ...
- C++笔记008:C++对C的扩展——命名空间 namespace基础
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一, 命名空间的意义 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突. 我认识两位叫“A”的朋友,一 ...
- PHP的命名空间namespace
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
随机推荐
- 聊聊kafka结构
因为kafka用到的地方比较多,日志收集.数据同步等,所以咱们来聊聊kafka. 首先先看看kafaka的结构,producer将消息放到一个Topic然后push到broker,然后cosumer从 ...
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction & ONB
Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...
- ubuntu安装mysql 时未提示输入密码
我在Ubuntu16.04版本中使用终端安装MySQL5.7时,按照度娘的教程,搜索如何安装,大多是如下代码: sudo apt-get install mysql-server sudo apt-g ...
- 用python批量生成简单的xml文档
最近生成训练数据时,给一批无效的背景图片生成对应的xml文档,我用python写了一个简单的批量生成xml文档的demo,遇见了意外的小问题,记录一下. 报错问题为:ImportError: No m ...
- Java包装类及其拆箱装箱
Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...
- 【NOIP2018】【RP++!】【神大退役记+一丢丢回忆录】
emmm初赛都完了啊,还有20多天的样子退役选手又要++++++了 所以在这里先预祝各路dalao取得好成绩!! 手动艾特亲友$@Abyssful@阿澈说他也想好好学习@Ed\_Sheeran@歪瓜是 ...
- 项目出现小红叉,类名上带有 Implicit错误
Implicit super constructor Object() is undefined for default constructor. Must define an explicit co ...
- 支付宝支付集成过程中如何生成商户订单号(out_trade_no)
out_trade_no是指商户网站唯一订单号,在商户端唯一,每个商户订单号会对应一个支付宝订单号 ,此订单号由珊瑚自己生成,商户订单号要求64个字符以内.可包含字母.数字.下划线:需保证在商户端不重 ...
- 添加 vip
两台机器:172.16.91.101 172.16.91.107 在91.101上增加虚拟ip,92网段的 ifconfig eth0:1 172.16.92.2 netmask 255.255.25 ...
- Spark MLlib 之 大规模数据集的相似度计算原理探索
无论是ICF基于物品的协同过滤.UCF基于用户的协同过滤.基于内容的推荐,最基本的环节都是计算相似度.如果样本特征维度很高或者<user, item, score>的维度很大,都会导致无法 ...