码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】基础入门(一):域、命名空间、C++输入&输出



    目录

    1.域

    1.1.域的使用

    1.2. :: 域作用限定符

    2.命名空间

    2.1.命名空间的性质

    2.1.1. 命名空间里面除了可以定义变量之外,还可以定义函数、类型。

    2.1.2.命名空间可以多重嵌套

    2.1.3.在编译阶段,同一级相同名字的命名空间可以自动合并

    2.2.命名空间的使用

    2.2.1.指定访问

    2.2.2.全部展开

    2.2.3.部分展开

    3. C++输入&输出


    在介绍命名空间之前,先要介绍一下域的概念:


    1.域

    作用域,和访问还有生命周期有关系。

    1.1.域的使用

    1. 在同一个域里面不能重复定义同一个名称的变量。
    2. 在不同的域里面能定义同一个名称的变量。

    以c语言为例:

      在全局域中定义一个 a 变量,就不能继续在全局域中定义a变量:

     但是可以在局部域里面在定义一个a变量:

     局部优先原则:


    1.2. :: 域作用限定符

      请注意: :: 域作用限定符左边是空白就默认代表访问的是全局域。


    2.命名空间

    C++为什么需要命名空间?

    由于 C 在大型的项目中非常容易出现命名冲突,所以就有了C++命名空间的由来。

    命名空间就是定义一个域:命名空间域。

    如果我们定义的变量名和库里面的名称冲突了怎么办?

     我们就可以使用命名空间来解决:

     我们来演示一个编译器查找规则:

     我们可以通过域作用限定符,来访问命名空间域中的变量:


    2.1.命名空间的性质

    2.1.1. 命名空间里面除了可以定义变量之外,还可以定义函数、类型。


    2.1.2.命名空间可以多重嵌套


    2.1.3.在编译阶段,同一级相同名字的命名空间可以自动合并

      同一个工程中允许存在多个相同名称的命名空间,编译器最后会将其合并在同一命名空间中。

      为了避免冲突,c++把标准库的东西定义到了自己官方的命名空间,这个命名空间的名称是 std,std 是C++官方库内容定义的命名空间。


    2.2.命名空间的使用

    命名空间的三种使用方式:

    2.2.1.指定访问

    在访问的对象前,加命名空间名称及作用域限定符。

     


    2.2.2.全部展开

    使用using namespace + 命名空间名称引入。


    2.2.3.部分展开

    使用using将命名空间中某个成员引入。


    3. C++输入&输出

      使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。

       <<  流插入运算符  >> 流提取运算符

      实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,将在之后的博客介绍。

      cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在< iostream >头文件中。

    cout 是 console out的简写,控制台输出,特点是自动识别类型。

    cin 是 console in简写,控制台输入,也可以自动识别类型。

     endl换行,是endline的意思,换行。

      使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。

      

    劣势:

      在输出时,指定如double类型的输出位数较为麻烦。在这种情况下推荐使用c语言的方式打印。

      总而言之最后实现时,那种更方便就优先使用那种。


    最后

      终于迈入C++了,继续加油啊!!

  • 相关阅读:
    abc 329 e ( dfs
    开发常用的 Linux 命令知识积累
    nginx中deny和allow详解
    【C语言数据结构】1.单链表
    UI自动化测试是什么?什么项目适合做UI自动化测试
    WebRTC源码之摄像头视频数据采集源码分析
    MCU平台使用SPI-DirectC实现FPGA在线升级
    基于javaweb教育科研信息管理系统
    YOLO目标检测——谢韦尔钢材缺陷检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
    狂神的MySQL(1)
  • 原文地址:https://blog.csdn.net/vpurple_/article/details/126861398
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号