Ich habe vor kurzem gelernt C++ zu lernen, einige einfache Klassen-/Freund-Funktion zu üben, was ich versuchte zu tun ist, erhalten 2 Zahlen von Benutzer für 2 Objekt einer Klasse mit Freund Funktionen nur dann wieder Verwenden Sie nur die Funktion friend, multiplizieren Sie diese 2 Zahlen und zeigen Sie sie auf dem Bildschirm an. Sagen wir, ich habe 2, 3, 4, 5 in der Reihenfolge eingegeben. Erwartete Ausgänge sind 6 und 20, aber ich kann nur 0 und 0 auf dem Bildschirm sehen.Kann keinen Wert speichern
#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;
}
'inputno' nimmt' obj' nach Wert und Änderungen in 'obj' sind für den Aufrufer nicht sichtbar (d. H. Es wird eine Kopie erstellt). – crashmstr
der 'iluvcpp obj' ist ein Parameter der Funktion' inputno' und sobald die Funktion diesen Parameter zurückgibt und alle Änderungen daran sind weg. Sie setzen niemals ein Feld des 'multi_1'. – user463035818
Hier finden Sie eine detaillierte Erklärung zu den Unterschieden zwischen Referenz und Wert: https://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by -Wert –