无法存储任何值

0 c++ friend-function

我最近开始学习C++,做一些简单的类/朋友函数练习,我试图做的是,通过使用友元函数从用户获取2个数字,然后再使用友元函数,再乘以2数字并在屏幕上显示.假设我按顺序输入了2,3,4,5.预期输出为6和20,但我只能在屏幕上看到0和0.

#include<iostream>
using namespace std;

class iluvcpp {
    int no_1, no_2;
public:
    iluvcpp(){}
    ~iluvcpp(){}
    friend void inputno(iluvcpp obj);
    friend int multiply(iluvcpp obj);
}multi_1, multi_2;

void inputno(iluvcpp obj) {

    cout <<"Enter no 1: ";
    cin >> obj.no_1;
    cout <<"Enter no 2: ";
    cin >> obj.no_2;
}
int multiply(iluvcpp obj) {
    return ((obj.no_2)*(obj.no_1));
}

int main() {
    inputno(multi_1);
    inputno(multi_2);   
    cout << multiply(multi_1) <<"   "<< multiply(multi_2);

    cout << endl;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

ori*_*rip 6

您按值传递对象,这意味着当您打电话给inputno您正在处理副本时.尝试将函数签名更改为:

void inputno(iluvcpp& obj) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

以下是关于按值和引用传递参数的示例的说明.