我最近开始学习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)
您按值传递对象,这意味着当您打电话给inputno您正在处理副本时.尝试将函数签名更改为:
void inputno(iluvcpp& obj) {
...
}
Run Code Online (Sandbox Code Playgroud)
以下是关于按值和引用传递参数的示例的说明.