第9讲(友元函数)

第9讲(友元函数)

ID:37782845

大小:43.50 KB

页数:8页

时间:2019-05-31

第9讲(友元函数)_第1页
第9讲(友元函数)_第2页
第9讲(友元函数)_第3页
第9讲(友元函数)_第4页
第9讲(友元函数)_第5页
资源描述:

《第9讲(友元函数)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9讲教学内容5.4类的友元5.4.1友元函数教学重点和难点1友元函数的作用和使用方法教学方法:通过举实际生活中的例子,来讲解类的友元的作用,以及友元函数的使用方法。教学学时2学时教学过程一类的友元1为什么需要友元?a)将数据封装到类中使其称为私有成员以后,数据的安全性大大提高了,但对数据的访问效率却下降了b)为了提高效率,在安全上就不得不作一点妥协:允许指定的函数(普通函数和其它类的成员函数)或其它类可以访问类的私有成员c)这些被指定的函数或其它类就称为这个类的友元d)友元是C++提供的一种破坏数据封装和数据隐藏的机制。e)作用:增加灵活性,

2、使程序员可以在封装和共享方面做合理选择。f)通过友元可以访问封装在一个类中的私有和保护的数据g)可以使用友元函数和友元类。2友元的使用方法:a)友元在类声明中用friend关键字说明b)友元函数不是这个类的函数成员,访问此类中的成员必须通过对象来访问c)友元关系是不能传递的,是单向的,是不能被继承的d)若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。 声明语法:将友元类名在另一个类中使用friend修饰说明。3使用友元要注意:使用友元的目的是为了提高访问特定数据的效率一旦将某个函数或者类声明为另一个类的友元,就意味着这个函数

3、或类的实现严重依赖另一个类的,如果另外一个类的实现发生了变化,就会…如果对访问的效率要求不是很高,或者两个对象并不具有天然的紧密联系,请不要使用友元,因此,应该只在有限的情况下(如操作符重载)使用友元。三个成员访问符号与友元关系的声明无关,因此友元关系声明可以防在类定义中的任何位置。良好的编程习惯:将类中的所有友元关系的声明放在类的定义后,不要在其前面添加任何成员访问说明符。例1:统计银行存款问题设计一个程序,其中有两个类,Cbank和Bbank,分别为中国银行类和工商银行类,每个类均包含一个私有数据balance(用于存放储户在该行的存款数)

4、,以及相关的输入输出函数,计算储户在这两家银行的总存款数目.分析:由于需要在外部对两个类的私有数据进行访问,因此需要设计一个友元函数total(),这样可以通过友元函数的访问属性,统计一个储户在这两家银行的总存款数。友元函数有一个重要的应用,就是多个类可以共享友元函数,在某些情况下,2个类或者多个类可以包含相互关联的成员。程序演示:#includeclassBbank;//前向引用声明//声明CbankclassCbank{friendinttotal(Cbankck,Bbankbk);private:intbalanc

5、e;//描述存款数目public:Cbank(intb=0):balance(b){}voidInputBalance(){cout<<"请输入在中国银行的存款数目"<>balance;}voidOutputBalance(){cout<<"在中国银行的存款数目是:"<

6、voidInputBalance(){cout<<"请输入在工商银行的存款数目"<>balance;}voidOutputBalance(){cout<<"在工商银行的存款数目是:"<

7、);cout<<"总存款数目是"<

8、(ax+by+c)/sqrt(a*a+b*b)

9、分析:1)设计一个点类Point,有2个私有数据成员x,y,表示点的坐标2)设计一个直线类Line,有三个私有数据成员a,b,c,表示直线方程ax+by+c=03)根据计算公式,求点到直线的距离,这个函数要访问

10、这个类的私有数据成员,所以把这个函数设为这两个类的友元函数。程序代码如下:#include#includecl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。