码农知识堂 - 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++了,继续加油啊!!

  • 相关阅读:
    MySQL:一文掌握MySQL索引
    千万级用户的大型网站,如何进行服务器压力预估?
    uniapp小程序文件下载保存
    解决SyntaxError: Cannot use import statement outside a module(ts文件运行问题)
    Python OpenCV 通过trackbar调整图像亮度对比度颜色
    钉钉h5微应用调试 整理
    云服务器的快照功能是什么?
    Spring中IOC容器的基本配置使用
    残差网络为什么有效
    Java基础之-OOP面向对象
  • 原文地址:https://blog.csdn.net/vpurple_/article/details/126861398
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号