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


相关推荐

  • 圆柱体积立方计算公式_圆的体积公式怎么算

    圆柱体积立方计算公式_圆的体积公式怎么算圆柱的体积=底面积x高,即V=S底面积×h=(π×r×r)h。假设圆柱的底面半径为2米,高为2米,则此圆柱的体积为:8π立方米。再根据1立方米=1000立方分米,转换成立方分米。其他转换类似。圆柱体是由两个底面和一个侧面组成的。在同一个平面内有一条定直线和一条动线,当这个平面绕着这条定直线旋转一周时,这条动线所成的面叫做旋转面,这条定直线叫做旋转面的轴,这条动线叫做旋转面的母线。扩展资料:圆柱的性…

    2022年9月20日
    1
  • LiveWriter高亮显示方法专题「建议收藏」

    LiveWriter高亮显示方法专题「建议收藏」2013年9月26日花了一上午的时间,熟悉了LiveWriter的用法,学会了怎么配置语法高亮,总结下来。方法1.用博客园推荐的方法没有成功。pass方法2方法来自一个人的旅行.试过OK博客

    2022年7月2日
    26
  • 用 Python 破解了同学压缩文件的密码

    用 Python 破解了同学压缩文件的密码↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python推荐作者:blank#来源:https://blog.csdn.n…

    2022年5月25日
    35
  • Java 自定义类加载器教程[通俗易懂]

    Java 自定义类加载器教程[通俗易懂]Java自定义类加载器教程除了在面试中遇到类的加载器的概率会高外,在实际的工作中很少接触。但是一个程序员想要成长为大牛就必须对一些JVM的底层设计有些了解。在此基础上我们阅读一些源码和框架会显得更轻松。好了废话不多说,我们接着前面的文章,乘热打铁。来实现一个Java自定义类加载器吧。要实现Java自定义的类加载器,我们需要继承ClassLoader。并且需要了解Java的双亲委派模型。loadClassloadClass默认实现如下:publicClass<?>

    2022年9月6日
    3
  • CListCtrl 使用大全

    CListCtrl 使用大全转载文章:今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下:以下未经说明,listctrl默认view风格为report相关类及处理函数MFC:CListCtrl类SDK:以“ListView_”开头的一些宏。如ListView_InsertColumn1.CListCtrl风格

    2022年6月23日
    21
  • ASIHTTPRequest开源类项目导入问题及解决方法[通俗易懂]

    ASIHTTPRequest开源类项目导入问题及解决方法

    2022年1月24日
    38

发表回复

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

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