将返回值传递给通过引用调用的函数

Passing return value to a function called by reference

本文关键字:引用 调用 函数 返回 返回值 值传      更新时间:2023-10-16

我有一个与自定义类型(类)对象一起工作的函数。为了避免复制该对象,我想让我的函数通过引用来使用它。

对于由代码创建的对象,这可以正常工作,但对于由方法返回的相同类型的对象,则不能。

下面是一个简单的整数例子,其中areEqual是函数:

#include <iostream>
using namespace std;
class part
{
    int i_Nbr;
    public:
    part(int n){
        i_Nbr = n;
    }
    int getNbr(){
        return i_Nbr;
    }
};
bool areEqual(int& q1, int& q2){
    return q1==q2;
}
int main(){
    int i1 = 50;
    int i2 = 60;
    part a(240);
    part b(220);
    bool eq;
    // this works
    eq = areEqual(i1, i2 );
    cout << eq << endl;
    // but this doesn't
    eq = areEqual(a.getNbr(), b.getNbr() );
    cout << eq << endl;
    return 0;
}
在我的例子中,对象不是整数,而是具有许多内部变量和许多方法的类的实例。是否有正确的方法?

更新:我的意思是我得到了一个编译错误:

file.cpp:32:28: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
bool eq = areEqual(a.getNbr(), b.getNbr() );

不起作用,因为函数返回int,这是对areEqual调用中的临时对象。当参数类型为int&时,不能使用临时对象。在areEqualint中使用int const&作为参数类型

bool areEqual(int const& q1, int const& q2){ ... }

bool areEqual(int q1, int q2){ ... }