1.C++关键字
asm do if return try continue auto double imline short typedef for bool dynamic_cast int signed typeid public break else long sizeof typename throw catch explict namespace case enum mutable static union wchar_t static_cast unsigned default char export new struct using friend class extern operator switch virtual register const false private template void true
const_
cast
float protected this volatile while delete goto
reiniterpret_
cast
C++关键字共有63个,在C语言的基础上增加了31个
2.命名空间 namespace
命名空间这个关键字产生的原因:当你在做一个大型的项目工程时,通常会出现一个巨大的问题,命名重复。你和你团队的成员的命名冲突,于是便产生这一个关键字。namespace的作用:对标识符的名称进行本地化,防止命名冲突或名字污染。
命名空间的使用方式:
3.auto的用法 注:编译器使用VS2022
auto这个关键字在之前是非常冷门的,C++11中重新定义了auto的用法:
auto在某些情况下可以代替不用写数据的类型,但auto不能做函数的参数,返回值
但这种用法并没有很大的意义,auto的用法
(1)当经过重定义后的类名仍然很长时,可以用auto去替代,可以省点力气;
(2)范围for循环时可以使用auto
当遍历数组时十分的好用
范围for循环并不会改变数组array中的值,它只是将数组中的值拷贝到x上。
4.引用
C++中在C语言的基础上加入了引用。
引用的实质:给变量取一个别的名字。
b是a的别名,c是b的别名,d是c的别名,为什么呢? 看一下他们的地址就知道了。
地址是相同的。
引用有什么用法呢?
(1)作为函数的形参。
在C语言中,如果想要通过函数的形参来改变实参的话,需要传递指针,但有了引用就可以通过引用来改变实参了,比指针在某些程度上更方便一些。
(2)作为函数的返回值
引用与指针的区别:
引用在语法概念上就是实体的一个别名,没有独立的空间,和实体共用一块空间;可以再看一下上面的代码;
引用和指针在汇编上的实现方式是相同的。
(1)引用在使用时必须初始化,指针没有此要求。
(2)引用在初始化后就不能再引用其他实体了,指针可以指向其他变量。
(3)有空指针但没有空引用
(4)有多级指针,但没有多级引用
(5)空间大小不同,引用的空间大小是由实体来决定的而,无论指针类型如何在 32 位机器上大小是4,64位大小是8
(6)引用自增相当于实体加1;指针是向后移动一个类型大小;
(7)访问实体的方式不同,指针需要自己解引用,二引用不需要
(8)引用比指针更安全
5.函数重载
C++允许声明定义具有相同的名字但形参类型形参个数不同位置不同的函数,函数的功能类似
但如果仅仅函数的返回值不同,则不构成重载;
函数重载的原理:
拿Linux举例,看似是名称相同的函数实际上在汇编上并不是,一个函数名仍然只对应一个地址,在汇编上可以看出他们实际的函数名是不同的
6.extern ”C“‘
C++在某些情景下需要用C语言的编译风格,在函数前加 extern C 就是告诉编译器是按照 C 的编译方式去编译代码
7.C++中的指针空值
在 C++中一个指向空值的指针应该用nullptr;