欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > C++入门基础(1)

C++入门基础(1)

2025/5/6 0:57:28 来源:https://blog.csdn.net/SWsunlight/article/details/140281188  浏览:    关键词:C++入门基础(1)

因为6月中旬学校事情多,许久未更新,让我们继续学习吧!

目录

前言:

 一、命名空间:

 1、定义:

 2、使用:

 3、访问命名空间域:

二、C++输入、输出函数:

1、输入函数:

2、输出函数:

3、升级的地方:

 三、缺省参数:

定义:

使用: 

四、重载函数: 

 1、参数类型不同:

2、参数个数不同:

3、不同类型的参数的顺序不同 :

4、注意:

1.返回类型不同不是重载函数

2.带有缺省参数的重载函数有歧义:

五、总结

前言:

毕竟是想吃c++这一碗饭,当然得认识一下,我们C++的祖师爷——本贾尼

✨✨ 发展历史:

 一、命名空间:

        ✨在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的对标识符的名称进⾏本地化,以避免命名 冲突或名字污染namespace关键字的出现就是针对这种问题的。c语⾔项⽬类似下⾯程序这样的命名冲突是普遍存在的问题,而C++引入了namespace关键字就是为了更好的解决这个问题✨✨

 域: 全局域局部域 和 命名空间域

 1、定义:

        👉namespace的作用就是定义一个作用域出来,这个域跟全局域各⾃独⽴不同的域可以定义同名变量

 有点类似结构体关键字 域名 就是一个我们命名的空间,后面接一个 {} 里面相当于域内成员(命名空间成员)域名可以任取!!

注意3个点:✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 

  1. 在花括号结尾处不要加分号;
  2. 改命名域只能在全局的位置定义,不能写在局部;但是它可以再里面继续嵌套命名空间域;
  3. 域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的声明周期,命名空间域和类域不影响变量声明周期。

✨ 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。此时编译器报错,因为同一域下是不能出现同名变量的


 2、使用:

      👉  编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。所以 下⾯程序会编译报错。所以我们要使⽤命名空间中定义的变量/函数。🐸🐸

由于命名空间是一个域,想要在其外部使用其中一个变量等内容,就需要像结构体那样,需要一个操作符来调用它!!

域作用域限定符 ::    也就是2个冒号

当然了,也可以通过这个调用全局变量,当改限定符前面没有任何域名,即空的时候就是调用全局变量

 3、访问命名空间域:

分为3种方法:

1、直接单个进行访问(指定命名空间访问):就是前面提到的 域名::成员名 单独一个一个来进行访问,是最安全的的使用方法,项目中推荐这种方法

2、单个展开:using将命名空间中某个成员展开,项⽬中经常访问的,不存在冲突的成员推荐这种⽅式;展开后相当于给他放到全局了,不要去频繁使用    ::

 展开方式如下:using后面告诉它我们要展开谁

3、全展开:using将命名空间全部成员展开,项目不推荐,冲突危险大,但是日常练习推荐使用,方便;

展开方式如下:告诉的using的我们要展开的是一个 命名空间域


二、C++输入、输出函数:

在c语言中经常用到的输入输出语句,scanf,printf,当然,c++兼容大部分c的语法,所以也能用,在有些时候,用c++很麻烦的时候,可以用c的一些语法来替代;当然C++的输入输出也是有的:cin/cout

就像C语言有自己的标准输入输出的库一样,C++也有自己的库———->>   <iostream>

✨✨<iostream>是Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象✨这里说明一下:该库包含了stdio.h的内容,可以直接通过该库使用printf和scanf

声明一下: 

        👉C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们;

当我们要使用他们时就需要像调用域名的成员一样 std::成员名

但是一般我们平时写代码就是 用到了👉全展开


1、输入函数:

cin其实就是input前面2个单词然后前面加个c

使用输入函数需要用到一个 >> 流提起操作符

当然这里的提取也可以提取多个,但是需要注意的时该操作符只能对一个操作数,所以要这么写


2、输出函数:

cout就是output前面的3个单词前面加一个c

使用输出函数需要用到一个 << 流插入操作符

这里可以也是一样的一个操作符对应一个操作数,可以插入多个

✨和C语言一样,没有换行,需要我们自己取手动加一个

✨endl 这个是一个函数,相当于 \n的作用,这里刚刚学习,不要深究,这么理解即可

✨<<可以写字符串,也可以写字符,都行,但是注意>>只能对应一个操作数

3、升级的地方:

        ✨✨不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。✨✨

值得注意的是没有了格式化,就无法控制数据的精度 

 但是C++兼容大部分C的语法,所以我们可以通过printf来控制其精度;


 三、缺省参数:

定义

缺省参数声明定义函数为函数的参数指定⼀个缺省值。👉在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省半缺省参数。(有些地⽅把缺省参数也叫默认参数)

 👉全缺省参数:全部参数都给一个缺省值

 半缺省参数:部分参数给定了一个缺省值;C++规定了,部分缺省参数必须从右向左缺省(从函数最右边参数开始缺省),不能跳跃缺省。

✨若不是从右向左,就会报错

使用: 

        ✨缺省参数的出现,让我们可以对于有缺省值的形参,能够不进行传参;而当我们不传参时,👉该形参就会使用自己的缺省值进行函数的实现✨

当然了,对于含有缺省参数的函数传参是,从左向右传实参的。我们发现:如果不给形参b传参,我们得到得a+b,就是传过去得实参a的值 + 形参中b的缺省值


四、重载函数: 

        ✨C++⽀持在同⼀作⽤域出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。反观:C语⾔是不⽀持同⼀作⽤域中出现同名函数的✨

👉在我们之前写加法函数时,C语言中,写了一个函数,就不能再出现重名了。为了方便,让一个函数名可以对多种类型数据进行加法,C++就允许了重载函数的出现🧑‍🎓

 1、参数类型不同:

✨ 传的参数类型不同,编译器会识别你的传参类型选择相匹配的那个函数;👉如下:

2、参数个数不同:

✨根据你传参的个数来判断使用哪一个函数🧑‍🎓

3、不同类型的参数的顺序不同 :

✨前提是里面必须是含有不同类型的参数才能有顺序不同的说法!!如果2个形参都是int 交换位置和不换位置都是一样的,这个就没有顺序不同之说✨

4、注意:

1.返回类型不同不是重载函数

✨看见红线了么,就是告诉你发生错误,不同的返回类型(返回值不同)编译器调用时,还是不知道调用谁。✨

2.带有缺省参数的重载函数有歧义:

✨这里不会报错,因为这个算的上时重载函数,但是值得注意的是,这是个有歧义的重载,编译器调用时会发生不知道调谁的情况,因为缺省参数也可以不传参,所以导致调用不传参的fcc()时,编译器不明白到底该调用哪个函数!🤔如果只调用fcc(a)就不会报错,那么这里用函数重载也没意义🧑‍🎓🧑‍🎓我们和计算机进行交流一定要明确清晰!!

👉👉不推荐缺省参数和重载函数一起使用!!!

五、总结:

暑假也要好好学习哦!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词