????!!??‧✧̣̥̇‧✦??‧✧̣̥̇‧✦ ??‧✧̣̥̇:Solitary_walk
⸝⋆ ━━━┓
- 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━ ➴ ⷯ
本人座右铭 : 欲达高峰,必忍其痛;欲戴王冠,必承其重。
???????
???自???
???信???
??? ??? 希望在看完我的此篇博客后可以对你有帮助哟
??????? 此外,希望各位大佬们在看完后,可以互相支持,蟹蟹!
???????
目录:
一:关键字
二:命名空间
三:C++输入和输出
四:缺省参数
五:函数重载
六:引用
七:内联函数
八:auto关键字(C++11)
九:基于范围的for循环(C++11)
十:指针空值:nullptr(C++)
思维导图:
1:关键字
学过C语言应该对关键字这一个概念都不陌生吧,在C语言里面,有32个关键字,而我们的C++里面有63个关键字
以下是C++中的关键字,对于初期学习C++的小白而言(不如我),不太建议大家全部背下来,一个是不太理解,其次是容易忘记,所以建议大家可以在学习的过程边学边记
2:命名空间
2.1前言
在C中,自定义的变量……是不许和标准库里面重名的
具体见下:
1)
2)
这时候发生了冲突(命名冲突)
C++中用关键字:namespace来解决这个问题
2.1命名空间的定义
namespace + 名字 +{ }
注意:{ }后面是没有分号的,不用于定义结构体
命名空间也是可以支持嵌套定义的
2.2命名空间的使用
第一种方法:指定的命名空间的名字+域作用限定符(::)
第二种方法:使用using 将某个成员引入
第三种方法: 使用using namespace +名称 :来进行引入
总的来说:对于日常的练习,可以进行全部展开:using namespace std ;
对于大型的项目工程,可以是部分展开(指定展开)
3:C++输入和输出
对于这两个运算符,姑且一笔带过
3.1 流插入运算符 <<
当我们想在输出设备(终端)进行打印的时候,就需要用到流插入运算符(注:endl 是换行的意思等价于C语言的 ‘\n’)
3.2流提取运算符>>
同理,有输出,自然就有输入
4:缺省参数
4.1概念
缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。4.2分类以及使用
全缺省参数:调用函数的时候没有传任何的参数
半缺省参数:调用参数的时候有参数
注意:
1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给 2. 缺省参数 不能在函数声明和定义中同时出现5:函数重载
5.1概念
C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这 些同名函数的形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现 功能类似 数据类型不同的问题。5.2使用
5.2.1:参数的类型不一样
5.2.2参数的个数不同
5.2.3参数的顺序类型不一样
注意:
1)当重名函数的返回类型不一致的时候,是不支持函数重载的
2)函数重载并不影响运行的效率(在编译的阶段完成函数重载的)
3)C++支持函数重载的本质:编译器的底层逻辑,是通过对调用的函数名字进行修饰来明确调用哪一个函数 ,不同的编译器对函数名字修饰是不一样的。
6:引用
6.1概念
引用 不是新定义一个变量,而 是给已存在的变量取了一个别名 ,编译器不会为引用变量开辟内存空 间,它和它引用的变量 共用同一块内存空间。6.2使用
类型+&+别名 = 实体
1)场景1
2)场景2
3)场景3:做参数
关于实参与形参的关系:形参是对实参的一份临时拷贝(内存的申请),对形参的临时修改不会影响实参的变化
当我们用引用来作为参数,减少了空间的开辟
4)场景4 :做返回值
总结:
如果函数以引用返回并且出了函数作用域,对应的空间并没有归还给系统,那就可以以应用返回,比如:malloc,静态区的,上一层函数栈帧的……
其实在底层逻辑上,引用也是以指针方式来实现的
引用与指针对比:
1. 引用概念上定义一个变量的别名,指针存储一个变量地址。 2. 引用 在定义时 必须初始化 ,指针没有要求 3. 引用 在初始化时引用一个实体后,就 不能再引用其他实体 ,而指针可以在任何时候指向任何 一个同类型实体 4. 没有 NULL 引用 ,但有 NULL 指针 5. 在 sizeof 中含义不同 : 引用 结果为 引用类型的大小 ,但 指针 始终是 地址空间所占字节个数 (32 位平台下占 4 个字节 ) 6. 引用自加即引用的实体增加 1 ,指针自加即指针向后偏移一个类型的大小 7. 有多级指针,但是没有多级引用 8. 访问实体方式不同, 指针需要显式解引用,引用编译器自己处理 9. 引用比指针使用起来相对更安全
7:内联函数
以 inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。
使用内联函数是以空间换时间,注意这个空间不是指的内存,编译器在编译链接的时候,目标文件会变大,使用内联函数最大的好处之一就是避免了函数栈帧的创建与销毁
对于编译器而言,这个内联函数是否展开取决于编译器,一般当函数规模较小(10行左右的代码),并且频繁调用的函数,编译器会展开
一般不要把内联函数的声明和定义分开,编译器会报错
内联函数解决了C语言的宏的不足之处
宏的优点与不足:
优点:代码复用性强;提高了性能
不足:可读性,可维护性较差;没有类型的检查;不便于调试
8:auto关键字(C++11)
作为一 个新的类型指示符来指示编译器, auto 声明的变量必须由编译器在编译时期推导而得 。(换言之就是可以自动识别变量的类型)
使用场景:
1)对引用和指针:
2). 在同一行定义多个变量 当在同一行声明多个变量时,必须保证所有变量都是同一种类型 使用auto 对应的变量必须进行 初始化
auto 不能使用的场景:
1)不能出现在形参里面
2)不能用于数组
9:基于范围的for循环(C++11)
使用范围for 的条件:
1)要有结束和起始 的范围
2)迭代的对象要实现++和==的操作
10:指针空值:nullptr(C++)
暂时以一个例子来引入:
相信有不少老铁会感到疑惑。
在 C++98 中,字面常量 0 既可以是一个整形数字,也可以是无类型的 指针(void*)常量 ,但是编译器 默认情况下将其看成是一个整形常量 ,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。
可以使用nullptr
1)在 C++11 中, sizeof(nullptr) 与 sizeof((void*)0) 所占的字节数相同。 2)nullptr 不需要引入对应的头文件,直接使用即可结语:
以上就是我要share的内容。对于刚刚学习C++的小白而言自然会有点摸不到头脑,有时也会觉得为啥要这样写呢,有什么可以应用的场景吗,别急,这只是为后面的迭代器,类和对象……打基础呢,等到后期自然就觉得非常爽了,各位大佬要是觉得还不错的话,支持一下呗!