C++相对于C的两种新的内置类型

在C语言提供的字符、整型、浮点型、指针、数组、结构和枚举等几类类型的基础上,C++又新增了两类基本类型,分别为布尔型和引用类型。

布尔型(bool)

C语言中没有明确地提供布尔类型,布尔类型的实现往往是通过宏定义或类型定义实现。C++为逻辑运算提供了单独的布尔类型(bool),可以具有值truefalse之一,其中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;
}

bool型

引用

引用就是某对象的另一个名字,引用的符号为&,常代替指针用于函数参数,避免传递过大数据或支持在函数中修改外部变量的值。也常用于返回值,用以返回某个在函数范围外仍有意义的变量的引用。在C++的运算符重载中引用也发挥着重要作用。

引用的定义形式为:

类型& b = a;

定义了一个引用a的变量bab指向同一块内存空间。与指针不同,变量b是变量a的一个别名,任何使用a的地方都可以使用b替换。指针的定义形式为类型 *b = &a,使用*ba替换。

在定义引用的时候必须对引用进行初始化。引用的值在初始化后就不能被改变了,它将总指向它初始化时指定的那个对象。对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;
}

引用

参考文献

  1. Bjarne Stroustrup著,裘宗燕译. C++程序设计语言(特别版).机械工业出版社 2009.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值