首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >std::的概念与作用

std::的概念与作用

作者头像
全栈程序员站长
发布2022-07-20 15:39:57
发布2022-07-20 15:39:57
9930
举报

大家好,又见面了,我是全栈君。

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107753.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年3月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档