在C语言提供的字符、整型、浮点型、指针、数组、结构和枚举等几类类型的基础上,C++又新增了两类基本类型,分别为布尔型和引用类型。
布尔型(bool)
C
语言中没有明确地提供布尔类型,布尔类型的实现往往是通过宏定义或类型定义实现。C++
为逻辑运算提供了单独的布尔类型(bool
),可以具有值true
或false
之一,其中true
的值被定义为1,false
的值定义为0。在算术运算中布尔型都被转换为int
。整数、字符、浮点数可以隐式转换为布尔型,其中非零数表示true
,零表示false
。指针也可以隐式转换为布尔型,非零指针转换为true
,空指针转换为false
.
/*****************************************
* using_bool.cpp *
* *
* C++语言的基本类型bool型的使用 *
*****************************************/
#include <cstdio>
int main()
{
bool a = true;
bool b = false;
printf("a = %d, b = %d\n", a, b);
a = 7;
b = -5.3;
printf("a = %d, b = %d\n", a, b);
int c = a + 1;
printf("c = %d\n", c);
int *p = &c;
bool d = p;
printf("d = %d\n", d);
bool e = a | b;
printf("e = %d\n", e);
bool f = 'f';
printf("f = %d\n", f);
return 0;
}
引用
引用就是某对象的另一个名字,引用的符号为&,常代替指针用于函数参数,避免传递过大数据或支持在函数中修改外部变量的值。也常用于返回值,用以返回某个在函数范围外仍有意义的变量的引用。在C++的运算符重载中引用也发挥着重要作用。
引用的定义形式为:
类型& b = a;
定义了一个引用a
的变量b
,a
和b
指向同一块内存空间。与指针不同,变量b
是变量a
的一个别名,任何使用a
的地方都可以使用b
替换。指针的定义形式为类型 *b = &a
,使用*b
和a
替换。
在定义引用的时候必须对引用进行初始化。引用的值在初始化后就不能被改变了,它将总指向它初始化时指定的那个对象。对T&
类型的引用的初始化必须是左值。而对于const T&
类型的引用的初始化可以不是左值,也可以不是T类型的,在这种情况下,首先将值转换为T
类型,然后将结果存入一个类型T的临时变量,最后将此临时变量用作初始化的值。在使用这个原则时,注意那些在程序运行过程中会消失的临时变量,在变量消失后,引用变得没有意义。
/*****************************************
* using_reference.cpp *
* *
* C++语言中的引用 *
*****************************************/
#include <cstdio>
int main()
{
int a = 10;
int& r = a;
printf("a = %d\n", a);
r = 20;
printf("a = %d\n", a);
//int& r3 = 10;不正确,int&只能利用左值初始化
const int& r2 = 10;//const int&可以使用右值初始化
printf("r2 = %d\n", r2);
return 0;
}
参考文献
- Bjarne Stroustrup著,裘宗燕译. C++程序设计语言(特别版).机械工业出版社 2009.