std::

当中std是名称空间,防止反复。比如说很多人给函数取名可能都叫f1();你使用的时候就可能造成问题。如果各人均把自己的f1()放进自己的名称空间。我们在使用的时候带上名称空间就不会有问题。

主要是起到了资源管理的作用。以下是一个样例:

有两个软件公司A公司和B公司,他们都是用C++语言开发他们的产品。那么,他们分别编写了a.h和b.h两个自己的头文件,这两个文件中都有一个叫func()的函数。

他们各自使用也没什么问题。

如果你公司也是一个软件公司,你如今要开发一个软件。必须同一时候用到A公司和B公司的头文件,同一时候会调用他们的func()函数。这个时候问题就来了,你调用的func()函数,编译器不知道应该选用A公司的还是B公司的。

为解决问题。C++採用了命名空间,这样。你调用A公司的func()函数。就使用A::func()。B公司亦然。

复习一下以上知识:

(A)这简单的程序里仅仅有全局和局部空间。没有其他的名字空间:

void  main( ) {
    std::cout << "";  // 错误:std不存在。
    cout << "";       // 错误:std不存在cout就不用提了。
}

(B)这个则多了一个叫std的名字空间。std这名字也可见了:

#include<iostream>
void main( ) {
    std::cout << "";  // OK:可通过std骚扰cout。

    cout << "";       // 错误:cout仍然被包在std里面,不可见。

}

iostream头文件中有std的声明。在编译之前,
预处理器会用iostream里的所有内容来取代
“#include<iostream>”这个预处理器指示符。

效果是,这程序包括iostream里的所有代码。
include是包括的意思。

包括指示是在全局空间里。所以在指示之后的不论什么地方,
std这个名字是可见、可訪问的。

(C)这个不包括声明std的代码却尝试打开std包,
     落了个跟(A)一样狼狈的下场:

using namespace std;
void  main( ) {
    std::cout << "";  // 错误:std不存在。
    cout << "";       // 错误:std不存在cout就不用提了。
}

(D)这个声明了std(曝露了std)并把std打开,
     让里面的名字(cin、cout、cerr、...)跟
     std一样暴露。

std::的概念与作用的更多相关文章

  1. PO BO VO DTO POJO DAO 概念及其作用

    PO BO VO DTO POJO DAO 概念及其作用(附转换图) 博客分类: java javadaovopojobo        J2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业 ...

  2. Memcached概念、作用、运行原理、特性、不足简单梳理(1)

    大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过.这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现 ...

  3. 浅析BFC布局的概念以及作用

    BFC的概念以及作用 BFC的定义: (Block formatting context)直译为"块级格式化上下文".它是一个独立的渲染区域,只有Block-level box参与 ...

  4. 接上一篇:(二) IOC的概念和作用

    IOC的概念和作用 控制反转(IoC:Inversion of Control)把创建对象的权利转交给框架(框架的重要特征),并非面向对象的专用术语. 它包含依赖注入(DI:Dependency In ...

  5. [转载]PO BO VO DTO POJO DAO概念及其作用

    原文链接:http://jeoff.blog.51cto.com/186264/88517/ POJO = pure old java object or plain ordinary java ob ...

  6. 转:PO BO VO DTO POJO DAO概念及其作用

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...

  7. [转]PO BO VO DTO POJO DAO概念及其作用(附转换图)

    来源:http://www.blogjava.net/vip01/archive/2013/05/25/92430.html J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候 ...

  8. annotation的概念及其作用

    概念 能够添加到 Java 源代码的语法元数据.类.方法.变量.参数.包都可以被注解,可用来将信息元数据与程序元素进行关联.Annotation 中文常译为“注解”. 作用 标记,用于告诉编译器一些信 ...

  9. PO BO VO DTO POJO DAO概念及其作用(附转换图)

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...

随机推荐

  1. POJ 2378 树形DP??

    思路: 找到每个节点的儿子size的最大值 和n-当前节点size 取个Max //By SiriusRen #include <cstdio> #include <cstring& ...

  2. janos.io

    http://janos.io/ https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Porting

  3. AIX设备四种状态

    AIX设备四种状态: Undefined(未定义):表示系统无法识别该设备,也就是系统无法找到该设备.(驱动无法识别) Defined(定义):表示系统可以识别设备,信息保存在ODM,但是系统不能使用 ...

  4. element-ui一些注意点:

    1.change ($event,“你要传递的其他值”),使用el-select组件时,想传递多个值. 或者 在el-option上的value属性上传递对象 eg: :value="{'c ...

  5. host---域名查询

    host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常. 选项 -a:显示详细的DNS信息: -c<类型>:指定查询类型,默认值为“IN“: -C:查询指定主机的完整的SO ...

  6. 【习题 8-6 UVA - 1611】 Crane

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 想把数字i从位置j移动到位置i 可以这样. 假设mov(x,y)表示将(x..x+len/2-1)和(x+len/2..y)交换. ...

  7. 【hdu 4289】Control

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=4289 [Description] 给出一个又n个点,m条边组成的无向图.给出两个点s,t.对于图中 ...

  8. HDU1050:Moving Tables

    pid=1050">Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  9. 单位阶跃函数(Heaviside/unit step function)—— 化简分段函数

    注意,单位阶跃函数一种不连续函数. 1. 常见定义 最经典的定义来自于 Ramp function(斜坡函数,max{x,0})的微分形式: H(x)=ddxmax{x,0} 2. 化简分段函数 如对 ...

  10. STM32介绍以及与通常ARM的区别

    ARM是英国的芯片设计公司,其最成功的莫过于32位嵌入式CPU核----ARM系列,最常用的是ARM7和ARM9,ARM公司主要提供IP核,就是CPU的内核结构,只包括最核心的部分,并不是完整的处理器 ...