您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页C++踩坑记录:C++ 非常量引用的初始值必须为左值

C++踩坑记录:C++ 非常量引用的初始值必须为左值

来源:爱go旅游网

C++踩坑记录:C++ 非常量引用的初始值必须为左值

1. 报错:

2. 举例代码:

int fun(int& c)
{
    int a = c+1;
    return a;
}
int funb(int b)
{
    return b;
}
int main()
{
    int b = 10;
    int& a= funb(b);    //报非常量引用的初始值必须为左值
    int& c = 10;// 报非常量引用的初始值必须为左值
    cout << fun(funb(b)) << endl;// 报非常量引用的初始值必须为左值
    return 0;
}

3. 问题原因:

1)通常函数的正常返回值是一个右值,所以给引用初始化复制一个函数返回值是有问题的。
2)类似于nt& c = 10 给引用赋值了一个常量右值

4. 解决办法

将 int& a= funb(b); 拆成两歨, 变成int c= funb(b); int& a=c;

int fun(int& c)
{
    int a = c+1;
    return a;
}
int funb(int b)
{
    return b;
}
int main()
{
    int b = 10;
    int d = funb(b);
    int& a= d;    
    cout << fun(d) << endl;
    return 0;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务