namespace的用法

1.什么是命名空间

通常我们学c++的时候经常看见头文件下有一句using namespace std,有什么用呢?

例如:

#include<iostream>
using namespace std; int main()
{
cout << "Hello,World!" << endl;
return 0;
}

如果我们去掉这句的话,程序就会报未声明变量cout和未声明变量endl。

原来std命名空间是C++中标准库类型对象的命名空间。如果加上using namespace std这句,程序就把文件内出现的用std命名的关键字都自动在前面加上std::。

2.namespace命名空间有什么用呢

namespace命名空间是在大型项目开发中,为了避免命名冲突而引入的一种机制。

比如A公司定义了命名变量score,B公司也定义了score,而且B公司里也有个小组C。但是我要先使用B公司的score变量,然后在使用A公司的score变量,最后使用B公司里的小组C。该怎么办呢?

A公司的文件

namespace A
{
int score=5;
}

B公司的文件

namespace B
{
int score=10;
namespace C{
int score=4;
}
}

使用方法

#include<iostream>
#include"A.cpp"
#include"B.cpp" using namespace std; int main()
{
{ //B声明在此范围有效
using B::score;
cout<<score<<endl;
}
{ //A声明在此范围有效
using A::score;
cout<<score<<endl;
}
{ //C声明在此范围有效
using B::C::score;
cout<<score<<endl;
}
return 0;
}

这就可以区分三个不同的score了。

namespace的作用的更多相关文章

  1. 转:C++ 匿名namespace的作用以及它与static的区别

    匿名namespace的作用以及它与static的区别 一.匿名namespace的作用在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做为函数名或者全局变量名,则 ...

  2. C++ 匿名namespace的作用以及与static的区别

    匿名namespace的作用以及它与static的区别 一.匿名namespace的作用 在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做 为函数名或者全局变量名 ...

  3. C++命名空间 namespace的作用和使用解析

    一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...

  4. 【转】C++命名空间 namespace的作用和使用解析

    一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...

  5. 46. Ext中namespace的作用(转)

    转自:https://www.cnblogs.com/givemeanorange/p/5569954.html Ext中在每一个页面中添加一个namespace呢,就像下面的代码: // creat ...

  6. namespace 的作用

    在写CPP的时候,常常要写using namespace std;这么一句话,到底有什么用呢? #include <iostream> namespace first { ; } name ...

  7. C++ namespace的作用

    namespace:命名空间或者叫名字空间,传统的c++只有一个全局的namespace,但是由于现在的程序规模越来越大,程序的分工越来越细,全局作用域就变得越来越拥挤,每个人都可能使用相同的名字来实 ...

  8. namespace的作用及用法

    namespace 所谓namespace,是指标识符的可见范围.C++标准库中的所有标识符都被定义在一个名为 std 的namespace 中. 一.<iostream>和<ios ...

  9. mybatis中的命名空间(namespace)的作用

    mybatis中为每一个映射文件添加一个namespace,这样不同的映射文件中sql语句的id相同也不会有冲突,只要定义在映射文件中的sql语句在该映射文件中id唯一就可以

随机推荐

  1. C# 利用反射动态给模型Model 赋值

    https://www.cnblogs.com/waitingfor/articles/2220669.html object ff = Activator.CreateInstance(tt, nu ...

  2. Bytom的链式交易和花费未确认的交易

    当我们基于比原做应用的时候,在构建交易过程中会遇到以下两种情况.多个地址向一个地址转账,还有一种就是从一个地址分批次向多个地址转账.那我们今天就来介绍一下这两种交易构建的具体流程,以及贴出具体实现的代 ...

  3. 2019 年 GrapeCity Documents 产品路线图

    前言 | 问题背景 随着软件行业引入新的硬件和操作系统,我们看到更多的托管框架与.NET技术保持同步.Microsoft的.NET Standard和.NET Core定义了一个跨平台规范,为应用程序 ...

  4. memcached、cookie、session

    Memcached(一个高性能的分布式的内存对象缓存系统) 可用来分担数据库的压力.通过在内存里维护一个统一的巨大的hash表,memcached能存储各种各样的数据,包括图像.视频.文件.以及数据库 ...

  5. js之作用域链到闭包

    一.作用域 全局作用域和函数作用域(局部作用域). 一个变量的作用域就是源代码中定义这个变量的区域. 二.作用域链和闭包 全局变量只有一个(window,globel),全局环境下每一个函数都会形成一 ...

  6. Antd-Pro2.0版本如何修改代理,让Mock变为真实服务器接口

    Antd-pro2.0之前更改代理方式 更改.roadhogrc.mock.js export default { 'GET /api/*': 'http://localhost:8001/', 'P ...

  7. Layui使用心得(1)---- 数据表格

    前端的框架我了解的不是太多,现在在用Layui的框架开发.之后准备转向Vue和React 这一系列博客主要讲一些我使用的Layui的常用组件的心得,官方的网站讲解已经很详细了,这里我只是结合我的实际使 ...

  8. c++中的回调

    一:设置一个函数指针,在需要使用的时候调用 #include <iostream> typedef void (__stdcall *DownloadCallback)(const cha ...

  9. [English] Time complexity wise this solution is the best among all

    Time complexity wise this solution is the best among all, we can do all operations in O(1) time. 时间复 ...

  10. 修改xml成正方形,保存

    import os import xml.etree.ElementTree as ET import cv2 origin_ann_dir = 'D:/Data/MyAnnoData/vmwareD ...