C++从零开始的打怪升级之路(day1)


这是关于一个普通双非本科大一学生的C++的学习记录贴

在此前,我学了一点点c语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资源

那么开启正题

今天学了一些C++的基础关键字,和一些零碎的知识点,下面展开分析

1.命名空间

1.1命名空间的定义

涉及关键词:namespace

                      using

在工程当中会遇见许多重命名现象,针对这种现象,C语言没有很好的解决方案,而C++中给出了这样的语法定义来解决这个问题

C++从零开始的打怪升级之路(day1)_第1张图片

借助namespace关键词我们可以创建如上的命名空间,当然,命名空间也可以嵌套定义,如下:

C++从零开始的打怪升级之路(day1)_第2张图片

 同一个工程目录当中允许存在多个重名的命名空间,编译器最后会合并在同一个命名空间当中

ps:一个工程中test.c和test.h同时出现了n1命名空间,会被合并在一起

1.2命名空间的使用

我们知道了命名空间的定义,还得知道命名空间如何使用

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

a. 加命名空间名称以及作用限定符 (  : :  ) 

C++从零开始的打怪升级之路(day1)_第3张图片

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

C++从零开始的打怪升级之路(day1)_第4张图片

当我们需要多次访问某命名空间里的成员时,使用using关键词,相当与将此成员展开,当然,在实际使用当中,我们需要考虑生命周期,及某个成员,在哪个大括号内展开比较好 

c .使用using namespace 命名空间名称  引入

C++从零开始的打怪升级之路(day1)_第5张图片

这种方法会将命名空间内的成员全部展开,来供我们访问

实际使用当中,我们需按需使用这三种使用命名空间的方法

2.C++的输入输出

首先看如下代码

C++从零开始的打怪升级之路(day1)_第6张图片

和C语言一样,C++也有类似于#inlcude的基础头文件及#include

(早期C++的头文件也使用.h,但后来为了于C语言头文件进行区分,也为了正确得使用命名空间,规定C++头文件不在带.h后缀,只有某些古老得编译器能识别带.h的头文件)

而std是C++标准库的命名空间,C++将标准库的定义实现都放到这个命名空间当中

cout是标准输出对象(控制台)     cin是标准输入对象(键盘)

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

相较于C语言,C++的输入输出更加方便,因为C++的输入输出可以自动识别类型

 C++从零开始的打怪升级之路(day1)_第7张图片

 3.缺省参数

缺省参数是指声明或定义函数时为函数参数指定一个缺省值

在调用函数时,如果没有指定实参则采用形参的缺省值,否则使用指定的实参

C++从零开始的打怪升级之路(day1)_第8张图片

缺省参数分为

a. 全缺省参数

b. 半缺省参数

全缺省参数的所有参数都带有缺省值,而半缺省参数只一部分参数带有缺省值,由于比较简单理解,这里就不贴图了 

要注意的是,1.半缺省参数必须从右向左来给,不能间隔给

                      2.函数传参也不支持间隔传参

                      3.缺省参数不能在函数声明和定义中同时出现

4.函数重载

4.1C++的函数重载

定义:函数重载是函数的一种特殊情况,C++允许在同一作用域下声明几个同名的函数,这些函数的形参列表(参数个数 or 参数类型 or 类型顺序)不同

a,参数个数 

C++从零开始的打怪升级之路(day1)_第9张图片

b.参数类型 

C++从零开始的打怪升级之路(day1)_第10张图片

c.类型顺序 

C++从零开始的打怪升级之路(day1)_第11张图片

4.2为什么C++支持函数重载而C语言不支持

首先我们得明白源文件是如何生成可执行程序得

a. 预处理   ——》 头文件的展开/宏替换/条件编译/去注释

b.编译   ——》 检查语法,生成汇编代码

c.汇编   ——》 汇编代码转成二进制的机器码

d.链接    ——》 将目标文件链接在一起

C语言编译函数名字的修饰没有发生变化

C++编译后函数名字的修饰会发生复杂变化(受编译器,形参列表,函数名的影响)

5.引用

5.1引用的概念

引用不是定义一个新的变量,而是给已存在变量取了一个别名,编译器不会为引用变量新开辟空间,它和引用的变量共用同一块内存空间

5.2引用的特性

 a.引用在定义时就必须初始化,再次调用时已经无法改变引用对象,而是访问引用变量

 b.引用只能引用一个实体

C++从零开始的打怪升级之路(day1)_第12张图片

 5.3常引用

 C++从零开始的打怪升级之路(day1)_第13张图片

C++从零开始的打怪升级之路(day1)_第14张图片这种用法是错误的

引用的权限不能高于实体,可以低于实体 

 C++从零开始的打怪升级之路(day1)_第15张图片

于是可以写出如上代码

实际上在类型转换当中,有一个中间临时变量,这个变量是只读的,利用此特性,我们可以理解以上代码的合理性

 今天的博客就到这里了,后续内容明天分享

新手第一次写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!!

你可能感兴趣的:(c++,开发语言)