C++中如何返回指向const对象的引用

C++中如何返回指向const对象的引用

使用const引用的常见原因是旨在提高效率,但对于何时可以采用这种方式存在一些限制。如果函数返回(通过调用对象的方法或将对象作为参数)传递给它的对象,可以通过返回引用来提高其效率。例如,假设要编写函数 Max(0),它返回两个 Vector 对象中较大的一个,其中 Vector 是第 11章开发的一个类。该函数将以下面的方式被使用:

Vector force1(50, 60);
Vector force2(10, 70);
Vector max;
max = Max(force1, force2)

下面两种实现都是可行的:

// version 1
Vector Max(const Vector & v1,const Vector & v2)
{
    if(v1.magval()>v2.magval())
        return v1;
    else
        return v2;
}

// version 2
const Vector & Max(const Vector & v1,const Vector & v2)
{
    if(v1.magval() > v2.magval())
        return v1;
    else
        return v2;
}

这里有三点需要说明。首先,返回对象将调用复制构造函数,而返回引用不会。因此,第二个版本所做的工作更少,效率更高。参见【0voice C++】其次,引用指向的对象应该在调用函数执行时存在。在这个例子中,引用指向force1或force2,它们都是在调用函数中定义的,因此满足这种条件。第三,v1和 v2都被声明为 const 引用,因此返回类型必须为const,这样才匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值