[c++] 笔记 返回const值

先看一个无意义的写法:

const int f();   注意这个函数是按值返回的,即返回的值是经过拷贝的副本。这当然毫无意义,你想告诉我,不要改变函数里面的值,现在我们返回的是一个拷贝副本,当然改变不了我们函数里的值。一般来说,内部类型(int之类)不需要用返回const值。

如果返回自定义类型,那么定义返回时const值的意思是告诉你这个返回值不能当左值使用。如

A f(){}和const A g();

允许f() = A();而不允许 g() = A()

 

class X
{
    int i;
public:
    X(int ii=0){i=ii;}
    void Modify(){i++;}
};

X f5()
{
    return X();
}
const X f6()
{
    return X();
}
void f7(X& x)
{
    x.Modify();
}

int main()
{
    f5() = X();
    f5().Modify();
    f7(f5());
    //f6() = X(1);//: 二进制“=”: 没有找到接受“const X”类型的左操作数的运算符(或没有可接受的转换)

    //f6().Modify();
    //f7(f6());// “f7”: 不能将参数 1 从“const X”转换为“X &”   

    return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值