gpt4 book ai didi

C++ 友元函数不工作

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:42 25 4
gpt4 key购买 nike

我是 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);

这样您将发送对您的对象的引用,而不是在一些单独的内存块中制作的那些对象的拷贝。因此,在您的 main 函数中创建的对象将被分配值。

关于C++ 友元函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com