引用

博客介绍了引用的概念,它是对象的另一个名字,主要用于描述函数参数、返回值及运算符重载。强调引用必须初始化,不开辟内存空间,改变引用值即改变引用变量的值,不能直接引用常量,加const修饰可行。还指出参数传递使用引用更具安全性和可读性。

【概念】

一个引用就是某对象的另一个名字。引用主要用途就是为了描述函数的参数和返回值,特别是为了运算符的重载。记法X&表示到X的引用。(我感觉,这里可以理解为linux操作系统中的文件的硬链接~。但是不知道是否很确切。。。。)

void f()
{
    int i =1;
    int &r = i;//r和i现在引用同一个int
    int x =r;//x=1
    r=2;//i=2;
}

【必须对引用初始化】

为了确保一个引用总能是某个东西的名字(也就是说,总能约束到某个对象),我们必须对引用做初始化。例如,

int i = 1;
int &r1 = i;//正确:r1被初始化。
int &r2;//错误:没有被初始化。
extern int& r3;//正确:r3在别处初始化。

【(引用不开辟内存空间)改变引用的值就相当于改变了引用引用变量的值】

引用的一种最明显的显示方式是作为一个(常量)指针,在每次使用它时都自动地做间接访问。将引用想象成这种样子不会有任何问题,但是,一个引用并不是一个对象,不能像指针那样去操作:

void g()
{
    int ii=0;
    int &rr= ii;
    rr++;//ii被增加1
    int *pp = &rr;//pp指向ii
}

【不能直接引用常量,加const修饰就可以】

double& dr =1;//错误:要求左值。

const double & cdr = 1;//ok;

后者解释:

double temp = double(1);//首先建立一个具有正确值的临时变量。

const double &cdr = temp;//而后用这个临时变量作为cdr的初始式。

【参数传递引用更具有安全性】

普通交换俩个值

void Swap(int *a,int *b)
{
    if(nullptr == a || nullptr == b) return;
    int tmp = *a;
    *b = *a;
    *a =tmp;
}

使用引用作为参数

void Swap(int &a,int &b)
{
    int tmp = a;
    b = a;
    a =tmp;
}

对比:引用作为函数的参数,1,增加了程序的可读性。2,少了"判空"操作,程序更安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值