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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用乘法公式_初中乘法公式有哪些

    常用乘法公式_初中乘法公式有哪些1、平方差公式$$a^2b^2=(a+b)(ab)$$2、完全平方公式$$(a±b)^2=a^2±2ab+b^2$$3、完全立方公式$$(a±b)^3=a^

    2022年8月4日
    6
  • 图片的文件格式后缀名_各种文件的后缀名

    图片的文件格式后缀名_各种文件的后缀名常见的文件后缀名.ACA:Microsoft的代理使用的角色文档.acf:系统管理配置.acm:音频压缩管理驱动程序,为Windows系统提供各种声音格式的编码和解码功能.aif:声音文件,支持压缩,可以使用WindowsMediaPlayer和QuickTimePlayer播放.AIF:音频文件,使用WindowsMediaPlayer播放.AIFC:音频文件,使用Win…

    2025年7月28日
    3
  • Web Proxy Auto-Discovery Service[通俗易懂]

    Web Proxy Auto-Discovery Service[通俗易懂]WinHTTPWebProxyAuto-DiscoveryService服务处于正在运行状态。但是有一天早上来发现全部电脑都无法上网。PINGISA都不通。重新启动后正常。我检查系统日志里面有3条关于WEB代理的日志:1。TheWinHTTPWebProxyAuto-DiscoveryServicehasbeenidlefor15minutes,i

    2022年6月21日
    105
  • HTML复选框_HTMLcheckbox代码

    HTML复选框_HTMLcheckbox代码①将type类型设为"checkbox"②name=""用来设置变量名③value=""用来设置变量默认值④<input>

    2022年8月5日
    12
  • hive 数据类型_sv数据类型

    hive 数据类型_sv数据类型本篇来学习一下Hive中的数据类型,以及如何在HiveSQL中去处理这些数据类型。Hive的数据类型可以分为基本类型、字符串类型、日期与时间戳类型、集合类型,我们分别进行介绍:1、基…

    2026年2月6日
    4
  • NetworkManager 学习

    NetworkManager 学习传送门:http://wiki.friendlyarm.com/wiki/index.php/Use_NetworkManager_to_configure_network_settings/zh1什么是NetworkManagerNetworkManager是一个检测网络、自动连接网络的程序(网络管理器),无论是无线网络,还是有线连接,它都可以令您轻松管理。NetworkManager…

    2022年9月28日
    3

发表回复

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

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