【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

2024-02-26 1574阅读

温馨提示:这篇文章已超过428天没有更新,请注意相关的内容是否还可用!

  🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:http://t.csdnimg.cn/eCa5z

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

 

目录

命名空间

命名空间的定义 

命名空间的使用

命名空间的嵌套使用

 C++输入&输出

 std命名空间的使用惯例:

 缺省参数

概念

 缺省参数分类

全缺省参数

半缺省参数

        ​编辑 

函数重载


前言

    💬 hello! 各位铁子们大家好哇。

             今日更新了命名空间、缺省参数、重载的内容

    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

命名空间

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

如上图,当我们没包stdlib.h的头文件时,可以正常打印。但如果包了该头文件,就会发生错误。

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出) 上面的错误称为命名冲突。

命名空间的定义 

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

 当有两个同名变量时,会优先在找局部的,如果找不到,再找全局的。如果我们想打印0,就可以加上 ‘::’ 前面不加域的情况下,默认是空,也就是全局域,该符号叫域作用限定符。 

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

当我们需要定义两个全局变量时,我们可以使用namespace关键字。这样两个同名变量x就在各自的命名空间域中。

编译器的搜索原则:

  1. 当前局部域
  2. 全局域
  3. 如果指定了,直接去指定域搜索

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

命名空间中,还可以定义函数,结构等。使用结构时,注意命名空间名称和作用限定符加在struct后面。注意:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

命名空间的使用

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

当我们想打印时,如果没有打开std这个空间域,我们就无法用C++方式打印。std是所有C++的库命名空间。如果此时想打印,就必须按下图方式:

第一种:加命名空间名称及域作用限定符

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出) 但是要一直加上命名空间名称和域作用符很麻烦,这时我们可以打开权限,使用using         namespace 命名空间名称,这样就有两种方式打印了:

第二种:使用using namespace 命名空间名称 

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

上面这种方式不推荐,他只是追求方便,尽量不要打开权限。 

 第三种:使用using将命名空间中某个成员引入

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

命名空间的嵌套使用

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

 当定义两个同名函数且在同一个命名空间时,可以在里面继续嵌套命名空间,这样就能区分开了。使用时记得有多层解开。

 C++输入&输出

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

说明:

  1.  使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含头文件 以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含头文件中。
  3. .是流提取运算符。 
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。

 std命名空间的使用惯例:

std是C++标准库的命名空间,如何展开std使用更合理呢?

  1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
  2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对 象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模 大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。

 缺省参数

概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。

 缺省参数分类

  • 全缺省参数

    【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

    分析:全缺省参数就是参数都给了缺省值。没有传参时,使用参数的默认值。传参时,使用指定的实参。注意:传参时,必须从左往右传参,不能间隔传参。 

    • 半缺省参数

              【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出) 

      分析: 半缺省参数必须从右往左依次来给出,不能间隔着给,因为实参是从左往右匹配的。

       【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

      上图是错误的例子。

      注意:

      1. 半缺省参数必须从右往左依次来给出,不能间隔着给
      2. 缺省参数不能在函数声明和定义中同时出现(缺省参数在函数声明给即可)
      3. 缺省值必须是常量或者全局变量
      4. C语言不支持(编译器不支持)

      函数重载

      函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型 不同的问题。

      C语言不允许同名函数

      CPP语言允许同名函数,要求:函数名相同,参数不同(例如:类型、顺序、个数不同),构成函数重载。

      下面举例类型不同:

      【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)


      C语言不支持重载。因为链接时,直接用函数名去找地址,如果有同名函数,区分不开。

      CPP支持。因为有函数名修饰规则,名字中引入参数类型,各个编译器自己实现一套。

      举例:【当前a.cpp中调用了b.cpp中定义的Add函数时】,编译后链接前,a.o的目标 文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。链接器看到a.o调用Add,但是没有Add的地址,就 会到b.o的符号表中找Add的地址,然后链接到一起。链接时,就通过函数名修饰规则找到对应函数。

      注意:如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办 法区分。 

       

       

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]