关于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

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

调试的时候,学制用用memory窗口,就不会出现这种笑话了(地址不一样)
westaf 2000-07-28
  • 打赏
  • 举报
回复
int ChangeData(Cc c1)
~~~~~~~~~~~~~~~~~~~~~
只要在这里把Cc改为Cc&就可以了:
int ChangeData(Cc& c1)
本套餐详细讲解了程序创建技巧以及C++核心知识要点,共包含9门课程,内容涵盖C++基础、C++模板、C++网络编程、C++数据库、C++多线程、C++ STL、C++动态链接库、C++ Boost、C++ GDI+课程,课程的每一个知识点老师都会进行具体讲解,并配有一定的实用案例。通过本课程的学习,学员可以掌握Windows高级C++开发工程师必学技能点,具备一定的使用C++解决问题的能力。 【现在学习c++,晚不晚?】 不晚!!! 第一,对于大学生来说,像国内的NOIP比赛,国际的ACM比赛,对大学生的求职,高生的升学,所有很大的帮助。 许多高校在自主招生的过程对有参加过比赛并获得过证书的学生都会有优先选择。大公司对有此经历的求职人员也会另眼相看。 第二,随着硬件的不断发展,存储器的容量不断扩增,要求我们编写更多复杂性更高的实时程序,而C++的优势就是可以用它来编写功能复杂,业务逻辑繁琐,实时性要求高的项目;之前看新闻知道Google的AlphaGo下围棋的水平已经是我们人类所达不到了。其背后也是用C++和神经网络编写的。 所以说,随着科技的不断进度,C++只会越来越受欢迎!!! 【学完课程,你将收获什么?】 课程为黄强老师数十年软件开发总结的C++一站式编程知识点,为想真正进入企业开发的童鞋带来全方位的知识补充,学完本课程后,童鞋们将对C++企业级开发必备知识得到全面的完善,在面试与工作能轻松达到企业要求! 【课程内容简介】 本系列课程为Windows平台 下C++高级开发工程师一站式课程, 学完后,童鞋们将达到企业高级以上开发能力,以下课程均为入职软件公司C++方向的开发工作必须掌握的高级知识点,课程内容主要包括:

69,336

社区成员

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

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