《c++primer笔记》复合类型--引用

  • 复合类型:基于其他类型定义的语言

这里介绍两种

  • 引用
  • 指针


声明语句:一个基本数据类型,一个声明符列表组成

  • 引用:为对象起另外一个名字
  • 引用类型:引用另外一种类型
int ival = 1024;
int &refVal = ival;        //refVal指向ival(是ival的另一个名字)
int &refVal2;              //报错,引用必须被初始化
  • 一般初始化变量:初始值会被拷贝到新建的对象中
  • 定义引用:把引用和他的初始值绑定在一起,而不是拷贝给引用。初始化完成,引用和初始值一直绑定在一起。因为无法让引用重新绑定另外一个对象,所以引用必须初始化
  1. 引用及别名

    1. 引用不是对象,他只是为已经存在的对象所起的另外一个名字,定义引用后,所有的操作都是在其绑定的对象上进行的。

      1. refVal = 2;        //把2赋给refVal指向的对象,即给了ival
        int ii = refVal;
      2. 引用赋值:把值赋给了与之绑定的对象。
      3. 获取引用的值:获取与之绑定的对象上的值
      4. 以引用作为初始值:引用绑定的对象作为初始值
    2. //正确:refVal13绑定到了那个与refVal绑定的对象上,就是绑定到了ival上
      int &refVal13 = refVal;        
      //利用与refVal绑定的对象的值初始化变量i
      int i = refVal;        //正确:i被初始化为ival的值
    3. 引用本身不是对象,所以不能定义引用的引用。
  2. 引用的定义
    1. 允许一条语句定义多个引用,每个引用标示符必须以&开头
    2. int i = 1024, i2 = 2048;        //i和i2 都是int 
      int &r = i, r2 = i2;            //r是一个引用,与i绑定在一起,r2是int
      int i3 = 1024, &ri = i3;        //i3是int,ri是一个引用,与i3绑定在一起
      int &r3 = i3, &r4 = i2;         //r3和r4都是引用
    3. 除了2.4.1(55页)和15.2.3(534页)介绍的两种例外,其他引用的类型都要与之绑定的对象严格匹配。引用只能绑定在对象上,不能使字面值或某个表达式的结果,原因2.4.1详述。
    4. int &refVal4 = 10;
      double dval = 3.14;
      int &refVal5 = dval;
				
时间: 2024-10-04 00:04:21

《c++primer笔记》复合类型--引用的相关文章

C++Primer快速浏览笔记-复合类型

C++Primer2.3节介绍了两种复合类型:引用和指针 1.引用 引用并非对象,它只是为一个已经存在的对象所起的别名. 一旦初始化完成,引用将和它的初始值对象一直绑定在一起,不能重新绑定到另一个对象,因此引用必须初始化. 定义引用时,程序把引用和它的初始值绑定到一起,而不是将初始值拷贝给引用. 引用本身不是一个对象,所以不能定义引用的引用 引用只能绑定在对象上,而不能与字面值或者某个表达式的结果绑定在一起. 引用的类型必须和与之绑定的对象的类型严格匹配.但是有两种例外情况: 1.初始化常量引用

c++学习笔记--复合类型,const。

复习c++,有必要对一些东西做一下笔记,方便以后学习,如有问题,欢迎提出. 首先,最常用两种复合类型应该是引用和指针. 所谓复合类型,是在基本类型基础(如:int)上定义的类型. 引用是c++的一个复合类型,首先,它和指针不同的是它并不是一个对象,仅仅只是另一个对象的别名.而且,引用绑定的东西必须是一个对象,引用不是,所以定义引用的引用是 不合法的.也不能定义字面量的引用.同时,普通引用的绑定对象与引用定义类型必须相同. 如: int &a=10;//错误的,必能定义字面量 double b =

C++ Primer Plus 复合类型

复合类型是指基于基本整型和浮点类类型而创建的数据格式. 1. 数组 1.1 声明数组时,必须指定元素数目,且元素数目必须是编译时已知的,所以变量(运行时设置的)不可以用来指定数目: 1.2 如果只对数组的一部分进行初始化,则编译器将其他元素设置为0; 所以初始化整个数组为0可以--int array[10] = {0}; 注: C++ 11支持去掉代码中的等号以及0,且不支持缩窄转换; 2. 字符串(C-风格字符串) 2.1 C++处理字符串有两种方式--C-风格字符串 & string类库;

C++ Primer 笔记——枚举类型

1.和类一样,每个枚举类型定义了一种新的类型.枚举属于字面值常量类型. 2.C++包含两种枚举:限定作用域的和不限定作用域的.C++11新标准引入了限定作用域的枚举类型. enum class /*struct*/ MyEnum { A = 0}; // 限定作用域的枚举 enum class /*struct*/ MyEnum1 { A = 0 }; // 限定作用域的枚举可以有重复的名字,使用时也必须加上作用域 enum MyEnum2 { B = 0 }; // 不限定作用域的枚举 enu

【共读Primer】10.<2.3> 复合类型 Page45

C++的复合类型 引用和指针 引用就像是类型的别名 int ival = 1024; int &refVal = ival; // int &refVal2 ; // 报错:引用必须被初始化 int &refVal1 = ival, &refVal2 = ival, &refVal3 = refVal1, Val4=ival; // refVal1/refVal2/refVal3都是引用,其中refVal3用另一个引用进行初始化 // Val4是一个int它并不是引

(4)风色从零单排《C++ Primer》 变量,引用,指针

从零单排<C++ Primer> --(4)变量,引用,指针   变量的初始化 所谓变量的初始化,指在创建变量的同时给予值. 初始化方法: int units_sold = 0; int units_sold = {0}; int units_sold{0}; int units_sold{0}; long double ld = 3.1415926536: int a{ld}, b = {ld}; //error:narrowing conversion required int c(ld)

Ch2_2&3复合类型

复合类型 引用reference 格式:基本数据类型+声明符(&d)= 对象:其中d是声明的变量名: eg. int ival = 1024; int &refVal = ival; 引用即是一个存在的对象/变量的另外的一个名字: 引用不是一个对象,对引用的操作即是对其绑定对象的操作: 引用必须与初始值bind在一起,并且无法重新bind到另外一个对象: 指针pointer 与引用的不同之处: 指针本身是一个对象,允许对指针复制和拷贝,可以先后指向不同的对象: 指针无须在定义时赋初值. 格

C++primer笔记2:变量和基本类型、字符串,向量和数组、表达式、类

第2章:变量和基本类型 char 8位 bool 未定义 short 短整型16 int 整型16 long 长整型32 long long 长整型64 C++11新定义的 float: 1个字 32位 6位有效位 double: 2个字 64位 10位有效位 long double: 10位有效位 带符号和不带符号的 unsigned 不带符号 仅仅表示大于0的 signed 带符号 大于,小于,0 基本字符集 :比特位 可寻址的最小内存块:字节 8比特 存储的基本单位 :字 32或64比特

C++数组,指针,引用以及三者的复合类型

C++数组,指针,引用以及三者的复合类型 这里省去了对这三者的单独介绍,仅仅介绍使用这三者组成的组合类型. 一.两两组合 这三者的两两组合有9种: 数组 指针 引用 数组 数组的数组 数组的指针 数组的引用 指针 指针的数组 指针的指针 指针的引用 引用 引用的数组 引用的指针 引用的引用 1.指针的指针.数组的数组.数组的指针.指针的数组 指针的指针(二维指针),数组的数组(二维数组),数组的指针和指针的数组这里就不介绍了,很多博客文章书籍都有详细的介绍.它们的形式是: 指针的指针: int*