《C++ Primer》笔记-引用
2012-12-27 10:29
141 查看
引用就是给变量起别名,然后别名和原变量就完全是一回事了,在C++中常用作函数形参,以返回多个值:
如:BOOL initLinkList(&L)
1.不能定义引用类型的引用,但可以定义任何其他类型的引用。
2.引用必须用与该引用同类型的对象初始化:
定义多个引用
可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加 “&”符号:
int i = 1024, i2 = 2048;
int &r = i, r2 = i2; // r is a reference, r2 is an int
inti3=1024,&ri=i3; //definesoneobject,andonereference
int &r3 = i3, &r4 = i2; // defines two references
const 引用
const 引用是指向 const 对象的引用:
const int ival = 1024;
const int &refVal = ival; // ok: both reference and object are const
int &ref2 = ival; // error: non const reference to a const object
可以读取但不能修改 refVal ,因此,任何对 refVal 的赋值都是不合法的。这 个限制有其意义:不能直接对 ival 赋值,因此不能通过使用 refVal 来修改 ival。
const引用与普通引用的不同:
const 引用可以初始化为不同类型的对象或者初始化为右值(第 2.3.1 节),如字面值常量:
同样的初始化对于非 const 引用却是不合法的,而且会导致编译时错误。
假如我们 编写
int temp = dval; // create temporary int from the double const int &ri = temp; // bind ri to that temporary
如果 ri 不是 const,那么可以给 ri 赋一新值。这样做不会修改 dval, 而是修改了 temp。期望对 ri 的赋值会修改 dval 的程序员会发现 dval 并没
有被修改。仅允许 const 引用绑定到需要临时使用的值完全避免了这个问题, 因为 const 引用是只读的。
非 const 引用只能绑定到与该引用同类型的对象。
const 引用则可以绑定到不同但相关的类型的对象或绑定到右值。
如:BOOL initLinkList(&L)
1.不能定义引用类型的引用,但可以定义任何其他类型的引用。
2.引用必须用与该引用同类型的对象初始化:
int ival = 1024; int &refVal = ival; // ok: refVal refers to ival int &refVal2; // error: a reference must be initialized int &refVal3 = 10; // error: initializer must be an object
定义多个引用
可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加 “&”符号:
int i = 1024, i2 = 2048;
int &r = i, r2 = i2; // r is a reference, r2 is an int
inti3=1024,&ri=i3; //definesoneobject,andonereference
int &r3 = i3, &r4 = i2; // defines two references
const 引用
const 引用是指向 const 对象的引用:
const int ival = 1024;
const int &refVal = ival; // ok: both reference and object are const
int &ref2 = ival; // error: non const reference to a const object
可以读取但不能修改 refVal ,因此,任何对 refVal 的赋值都是不合法的。这 个限制有其意义:不能直接对 ival 赋值,因此不能通过使用 refVal 来修改 ival。
const引用与普通引用的不同:
const 引用可以初始化为不同类型的对象或者初始化为右值(第 2.3.1 节),如字面值常量:
int i = 42; // legal for const references only const int &r = 42; const int &r2 = r + i;
同样的初始化对于非 const 引用却是不合法的,而且会导致编译时错误。
假如我们 编写
double dval = 3.14; const int &ri = dval;
编译器会把这些代码转换成如以下形式的编码:
int temp = dval; // create temporary int from the double const int &ri = temp; // bind ri to that temporary
如果 ri 不是 const,那么可以给 ri 赋一新值。这样做不会修改 dval, 而是修改了 temp。期望对 ri 的赋值会修改 dval 的程序员会发现 dval 并没
有被修改。仅允许 const 引用绑定到需要临时使用的值完全避免了这个问题, 因为 const 引用是只读的。
非 const 引用只能绑定到与该引用同类型的对象。
const 引用则可以绑定到不同但相关的类型的对象或绑定到右值。
相关文章推荐
- 【C++ Primer学习笔记】引用返回左值
- const 引用——c++ primer 学习笔记
- C++ Primer学习笔记:引用的使用注意事项
- C++ Primer 笔记五 引用(const)1
- C++ Primer 学习笔记11 函数(函数调用、引用形参、非引用形参)
- C++ Primer 笔记五 引用(const)1
- c++ primer 学习笔记之右值引用
- c++ primer 学习笔记,关于引用等等
- c++ primer 笔记,第五章
- c++ primer阅读笔记-13章-3
- JS 引用类型 Math 对象 JS学习笔记2015-7-3(第74天)
- 《C++ Primer 第四版》笔记(3)
- C++ Primer学习笔记:变量使用小结
- 重温《C++ Primer》笔记十 当数组作为函数参数时
- C++ primer 学习笔记(1)
- swift学习笔记之自动引用计数
- C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化
- 类与对象、引用传递、封装、构造方法、匿名对象笔记
- C++primer学习笔记--右值引用
- 《C++ Primer》引用和指针