std::的概念与作用

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年3月13日 上午7:18
下一篇 2022年3月13日 上午7:18


相关推荐

  • 关于时序数据库[通俗易懂]

    关于时序数据库[通俗易懂]https://blog.csdn.net/ransom0512/article/details/78114167看了一些时序数据库,没有太深入,有一些大概认识,记录下来。 1.  核心数据存储分为行存储或者列存储,由于列存储的高压缩比,现在使用列存储的比较多一些。当前有很多时序数据库采用了在底层KV存储(Cadssandra,HBase,LevelDB,RocksDB)基础…

    2022年10月5日
    4
  • oracle9i如何卸载,如何卸载oracle 9i

    oracle9i如何卸载,如何卸载oracle 9i本文中主要是为大家讲解如何进行 oracle9i 的卸载工作 相信大家在学习完本文之后都能够掌握 oracle9i 卸载的方法 希望对大家能够有所帮助 在 win2000 企业版操作系统下 卸载 Oracle9i 1 停止所有 Oracle 服务 2 删除注册表中的所有关于 Oracle 项 1 在 HKEY LOCAL MACHINE SOFTWARE 下 删除 Oracle 目录 2 在 HKEY LOCAL MACH

    2026年3月26日
    3
  • Channel9中关于Windows内核的采访录像

    Channel9中关于Windows内核的采访录像转载自http://advdbg.com/blogs/advdbg_system/articles/21.aspx今年一月份起,Channel9陆续访谈了一些微软内部的高级设计师和架构师,每次探讨Windows内核的一个方面。尽管录像和采访水准比.NetShow差很多,但是正因为采访的场合就在办公室,气氛也很随意,又很有针对性,因此谈的内容还是很值得一看的。建议大家茶余饭后边听边消遣一下。

    2022年7月13日
    20
  • 一个空间主机安装多个网站的方法

    一个空间主机安装多个网站的方法

    2021年10月8日
    37
  • 激光三角测距原理概述

    激光三角测距原理概述激光三角测距法作为低成本的激光雷达设计方案,可获得高精度、高性价比的应用效果,并成为室内服务机器人导航的首选方案,本文将对激光雷达核心组件进行介绍并重点阐述基于激光三角测距法的激光雷达原理。激光雷达四大核心组件激光雷达主要由激光器、接收器、信号处理单元和旋转机构这四大核心组件构成。激光器:激光器是激光雷达中的激光发射机构。在工作过程中,它会以脉冲的方式点亮。以思岚科技的RPLID…

    2022年5月5日
    55
  • SQLite 下载与安装「建议收藏」

    SQLite 下载与安装「建议收藏」一,安装1.到sqlite官网下载压缩包https://www.sqlite.org/download.html下载后是下面这2个文件:解压到同一目录,如图:”安装”完成后,在cmd下,执行sqlite3验证下是否安装正常。若不正常则需要添加系统环境变量,以便命令行式的操作。二,安装管理工具官网:http://sqlitestudio.pl或直接访问下载https://github.com/pawelsalawa/sqlitestudi…

    2025年8月2日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号