1.命名空间namespace
1)作用:防止类似在C语言中出现相同函数名冲突的情况。在以后的学习中,如函数、类、变量的名称都将在全局作用域中大量出现,为避免导致冲突所以就会用namespace来将这些标识符的名称本地化。
2)性质:namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量。
C++中域有函数局部域,全局域,命名空间域,类域;局部域和全局域除了会影响编译查找逻辑,还会影响变量的声明周期,命名空间域和类域不影响变量声明周期。域之间存在隔离。
namespace只能定义在全局,当然他还可以嵌套定义。
项目工程中多文件中定义的同名namespace会认为是⼀个namespace,不会冲突。
C++标准库都放在⼀个叫std(standard)的命名空间中。
3)使用:在项目中,一般推荐指定命名空间访问;在日常小练习中,为了方便可以将命名空间全部展开使用;用using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式。
2.cout<<与cin>>
前者可以理解为高级的printf(会自动识别变量类型)。
后者可以理解为scanf。
3.缺省参数
缺省参数(默认参数)是声明或定义函数时为函数的参数指定⼀个缺省值。
全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。
带缺省参数的函数调用,C++规定必须从左到右依次给实参,不能跳跃给实参。
函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。
4.函数重载
一般来讲,执行相同逻辑运算的函数出现参数的类型,个数,顺序不同时可以构成函数重载。
函数的重复声明:这个概念极易与重载混淆。若函数仅出现返回值不同,或者缺省参数不同,则视为重复声明。
5.引用
1)特性(这里与指针比较记忆)
·引用必须初始化,指针不必(但为防止野指针,还是要初始化)
·引用在初始化后便不能再引用另一个实体了,但指针可以在任意时候指向同类型实体
·无多级引用,有多级指针
·引用体现了最小特权原则,即给予程序元素完成其功能的最小权限, 指针能够毫无约束的操作内存中的任何东西,尽管功能强大,但是非常危险
2)const引用
可以引用一个const对象,但是必须用const引用。const引用也可以引用普通对象,因为对象的访 问权限在引用过程中可以缩小,但是不能放大。
C++规定临时对象具有常性。
如 int a = 10;
则有 const int& rb = a*3;
此刻,a*3视为常量,需要用const修饰
6.inline
用inline修饰的函数叫做内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联 函数就需要建立栈帧了,就可以提高效率。(用空间换时间)
适用:短小且频繁调用的函数
不适用:递归或代码较多函数
设计目的:替代宏(宏的使用复杂且易错,还不方便调试)
inline不建议声明和定义分离到两个⽂件,分离会导致链接错误。因为inline被展开,就没有函数地 址,链接时会出现报错。
7.nullptr
相当于C语言中的NULL
而真正的NULL在这里代表0