C++引用

一. C++中的引用

引用(reference)实际上是为对象定义了一个别名,主要用作函数的形参。

引用通过在变量名前加上"&"符号来定义。

例如:
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

注意引用是为对象定义的一个别名,操作引用时实际上是引用所指的对象,例如:
refVal += 2;
实际上是将revVal所指的对象ival加2。

类似的:
int ii = refVal;
实际上是将ival赋值给ii。

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
引用加上const的意义在于既不能直接修改ival的值,也不能通过引用refVal来修改ival。


二. 引用作为形参
下面的例子,交换两个变量的值:
// incorrect version of swap: The arguments are not changed!
void swap(int v1, int v2)
{
	int tmp = v2;
	v2 = v1;	// assigns new value to local copy of the argument
	v1 = tmp;
}		
swap本意是想交换v1、v2两个变量的值,但这里却不能实现,因为函数形参只是传递变量的一个拷贝,而不是变量本身(C中可以通过指针来完成)。

C++中也可以通过引用来完成:
// ok: swap acts on references to its arguments
void swap(int &v1, int &v2)
{
	int tmp = v2;
	v2 = v1;
	v1 = tmp;
}
因为操作引用实际上引用所指向的对象,所以这里交换两个变量的值是能够实现的。


三. 指针与引用的区别:
. 指针可以赋值为NULL,但是引用定义的时候必须初始化,没有NULL引用的说法。
. 引用初始化时一旦关联了一个对象,那么后面就不能将这个引用关联到其他对象了,而指针是可以改变的。
. 指针是一个变量,而引用只是对象的一个别名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值