C++引用

来源:互联网 发布:大数据净值 编辑:程序博客网 时间:2024/06/15 23:12

1. 引用

Refer to C++ Primer 4th Edition

引用是对象的别名,实际应用中,主要做函数的形式参数。

引用是一种复合类型,通过变量名前加“&”定义,引用定义时必须指向一个已初始化的对象

int iVal = 1024;

int &refVal = iVal;

int &refVal2; //Error as a reference must be initialized

int &refVal3 = 3; //Error as the initializer must be an object, but legal if it a const reference


1.1 const引用

const引用是对const对象的引用,const对象不能被非const引用所引用,但是const引用可以指向非const对象。如果引用为const的,则表明不能对此引用赋值(也不能通过const引用改变对象的值),也就是说不能改变引用的引用对象,他只能指向这个对象。对const引用赋值会有编译错误。

const int iVal = 1024;

const int &refVal = iVal;

int &refVal2 = iVal;  //Error as the reference is not const


const引用可以用常量或者表达式初始化,非const引用则不行

int i = 22;

const int &ref = 42;

const int &ref2 = ref + i;


const引用可以初始化为不同类型的对象,但非const引用只能初始化成相同类型的对象。但是这种情况下,const引用并非指向此对象,而是指向了一个新建的同类型的对象

double dval = 23.2;

const int &ref = dval; //works


const引用初始化不同类型对象是,编译器实际上新建了一个同类型的对象,const引用是指向的这个对象。所以如果改变对象的值,const引用对象的值是不会改变的

int temp = dval; //created by compiler

const int &ref = temp; //const reference actually refer to the temp object

dval = 25.2; //the value of ref is still 23



引用的本质观点:http://www.douban.com/note/282520446/

引用变量占不占内存?


0 0
原创粉丝点击