我是 C++ 新手,一直在尝试了解 C++ 中的类。最近我尝试了这个程序,它没有返回整数 9,而是返回一些垃圾值。有人可以帮我吗
#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
class abc;
class xyz
{
int a;
public:
friend int add(xyz, abc);
friend void setval(xyz, int, abc, int);
};
class abc
{
int b;
public:
friend int add(xyz, abc);
friend void setval(xyz, int, abc, int);
};
int add(xyz V1, abc V2)
{ return (V1.a + V2.b);}
void setval(xyz v1, int v11, abc v2, int v22)
{v1.a = v11; v2.b = v22; }
int main()
{
xyz A;
abc B;
setval(A, 4, B, 5);
cout<<add(A, B)<<endl;
return(0);
}
最佳答案
发生这种情况是因为您按值将参数传递给 setval
函数,这将修改您传递的对象的拷贝。
请改用以下签名:
void setval(xyz& v1, int v11, abc& v2, int v22);
这样,您将发送对对象的引用,而不是在某些单独的内存块中创建的对象的拷贝。因此,在主函数中创建的对象将被分配值。
关于C++ 友元函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763433/