一、bool类型
C++ 新增数据类型是基本类型中的布尔型 bool 和构造类型的类 class 。 布尔常量 bool 仅有两个:
false 0 假
true 1 真
关系运算符用于比较两个操作数的大小,其比较的结果是一个 bool 型的值。 当两个操作数满足关系运算符指定的关系时,表达式的值为 true,否则为false。
二、函数新增
1.默认值 有时需要用相同的实参反复调用同一函数,为了避免反复传递相同实参的信息, C++中允许函数定义默认的参数值。
如果一个函数中有多个参数,则设置参数默认值时,要求从右向左设置。当调用函数时,只能将实参从左向右为形参赋值,当实参数量少于形参数量时,形参从左向右与实参匹配,剩余形参则取默值。
注:当程序中既有函数的声明又有函数的定义时,默认参数只能在函数声明中给出,而定义中不允许设置默认参数。
2.函数的重载 函数的重载是指建立多个同名的函数,但函数的形参表必须互不相同。不相同可以是形参个数不同,也可是形参的类型不同,还可两者都不同。(返回值不是,形参名也不是),重载函数也可以带有默认值参数,但是要注意二义性。(注意歧义,会报错)
三、引用
1.引用的概念:引用是对一个变量或常量标识符起的别名。本身地址为引用变量的地址。
数据类型 &引用名 = 变量名; int &ra = a;
注:
- 创建一个引用时,该引用必须被初始化。所以不能有空引用。
- 不允许把为一个变量建立的引用重新用作另一变量的别名。
- 对于 void 和 数组名不可以引用,但是可以对数组的某个元素的引用。
- 不要返回指向局部变量或临时对象的引用。
2.指针和引用 (1)不同点:
- 指针和引用对它们所指的或所引用的变量的操作方式不一样。
- 指针的功能更强大,但同时也更不受控制。
- 引用则是较高级地封装了指针的特性,它不直接操作内存地址,因而具有较高的安全性,也不易产生由于使用指针而常常产生的那些不易察觉的错误,不失为一种好的选择。
(2)相同点:都可以采用间接操作的手段对某个变量所代表的空间进行访问。
3.函数参数传递 (1)传值调用(单值传递) 函数传值调用是将实参的值传递给形参,形参和实参各自具有单独的存储空间,因此改变形参的值时,实参的值不会受到任何影响。
(2)传址调用 传址调用则传递的是变量的存储地址。实参是地址值,用地址常量或指针变量表示,形参是指针变量。 函数调用时系统将实参所表示的地址值赋给形参的指针变量,从而使得形参和实参的指针指向的是相同的存储地址。在被调用函数中,可以通过形参指针改变其所指向的元素。传址调用的实现机制就是可以通过改变形参所指向的变量值来影响实参。
(3)引用调用 使用函数的引用调用时,函数的实参用变量名,形参是引用类型。函数调用时,实参给形参赋值,对引用进行了初始化,引用是实参的别名。在被调用函数中,可以通过引用间接访问被引用的变量,所有在引用上施加的操作,实质上就是施加在被引用变量上的操作。引用调用可以通过形参引用改变被调用函数中被引用的实参变量的值。
四、C和C++的不同
在很大程度上,C++是C的超集,这意味着一个有效的C程序也是一个有效的C++程序。C和C++的主要区别是,C++支持许多附加特性。但是,C++中有许多规则与C稍有不同。这些不同使得C程序作为C++程序编译时可能以不同的方式运行或根本不能运行。 例如:
- 在C++中,函数原型必不可少,但是在C中是可选的。
- C把char常量视为int类型,而C++将其视为char类型。
- 在C中,全局的const具有外部链接,但是在C++中,具有内部链接。
- 在C++中,可以使用const值来初始化其他const变量,但是在C中不能这样做。
|