std::的概念与作用

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一样暴露。

  • 17
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值