UE学习日志#20 C++笔记#6 基础复习6 引用2

3.1 const引用传递

        const 引用的参数的主要目的是效率。当将值传递给函数时,便会生成一个完整副本。传递引用时,实际上只是传递指向原始对象的指针,因此计算机无须生成副本。通过 const 引用传递,可以做到二者兼顾:不生成任何副本,并且无法更改原始变量。当处理对象时,const 引用变得更重要,因为对象可能很大,并且对其进行复制可能会产生有害的副作用。下面的示例演示如何将 std:string 作为 const 引用传递给函数:

void printString (const string& myString){
    cout << myString << endl;
}
int main(){

    string someString {"Hello World"};
    printString (someString) ;
    printString ("Hello World"); // Passing literals works.
}

3.2 值传递和引用传递

        当要修改参数并希望那些更改能够作用于传给函数的变量时,需要通过引用传递。但是,不应将引用传递的使用局限于那些情况。引用传递避免将实参复制到函数,从而提供了两个附加好处:
1.效率:复制大型的对象可能花费很长时间,引用传递只是将该对象的一个引用传给了函数
2.支持:不是所有的类都允许值传递
        如果你想利用这些好处,但又不想修改原始对象,则应将参数标记为 const,从而可以传递 const引用。
注意:
        引用传递的这些好处意味着,应该只在对于简单的内置类型,例如 int 和 double,且无须修改实参的时候使用值传递。如果需要将对象传递给函数,则更应该使用 const 引用传递而不是值传递。这样可以防止不必要的复制。如果函数需要修改对象,则通过对非 const 的引用将其传递。(在引入了移动语义之后,对该规则进行了稍微修改,允许在某些情况下对对象使用值传递。)

4 引用作为返回值

        函数也可以返回引用。当然,只有在函数终止后返回的引用所指向的变量继续存在的情况下,才可以使用此方法。
警告:
        切勿返回作用域为函数内部的局部变量的引用,例如在函数结束时将被销毁的自动分配的栈上变量。

        返回引用的主要原因是,能够直接把返回值作为左值(赋值语句的左侧)对其赋值。几个重载的运算符通常会返回引用,例如,运算符=、+=等。

        注:今天有事出去了,这篇内容算赶的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值