关于C++中的Friend问题?请赐教!

peterl 2000-07-28 07:39:00
本人自学C++,Friend友员函数能对Class中的Private私有数据成员访问。但我在编程中发现友员函数改变了私有数据成员的值后,但私有数据成员中还是保持原来的值。具体请看下面的程序:
#include <iostream.h>

class Cc
{
private:
int data;
friend int ChangeData(Cc c1);
public:
Cc()
{data=0;
}

void ShowData()
{
cout<<data<<endl;
}
};

int ChangeData(Cc c1)
{
c1.data=10;
return c1.data;
}

void main()
{
int i,j;
Cc c2;
i=ChangeData(c2);
c2.ShowData();
cout<<i<<endl;
}


屏幕输出的结果是:
0
10

为什么会输出以上的结果:请赐教!
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
deanjiang 2000-07-28
  • 打赏
  • 举报
回复
老兄,先告清楚传值与传址的区别,

调试的时候,学制用用memory窗口,就不会出现这种笑话了(地址不一样)
westaf 2000-07-28
  • 打赏
  • 举报
回复
int ChangeData(Cc c1)
~~~~~~~~~~~~~~~~~~~~~
只要在这里把Cc改为Cc&就可以了:
int ChangeData(Cc& c1)

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧