c++语言简明教程 教学课件 作者 吴延海_第6章.ppt

c++语言简明教程 教学课件 作者 吴延海_第6章.ppt

ID:50350256

大小:281.00 KB

页数:75页

时间:2020-03-08

c++语言简明教程 教学课件 作者 吴延海_第6章.ppt_第1页
c++语言简明教程 教学课件 作者 吴延海_第6章.ppt_第2页
c++语言简明教程 教学课件 作者 吴延海_第6章.ppt_第3页
c++语言简明教程 教学课件 作者 吴延海_第6章.ppt_第4页
c++语言简明教程 教学课件 作者 吴延海_第6章.ppt_第5页
资源描述:

《c++语言简明教程 教学课件 作者 吴延海_第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章友元和运算符重载6.1友元的概念6.2定义友元的方法6.3运算符重载本章小结友元可以提高程序的运行效率,使非成员函数可以访问类中的所有成员。C++语言支持运算符重载,运算符重载是一种重要的多态性,丰富了运算符操作的数据类型和方法。类具有封装性,将一个对象的私有信息隐藏起来,这对提高软件的可靠性、可维护性和可扩充性起了关键的作用。它只允许自己的成员函数访问该类的私有成员,程序中的其他函数是无法访问的。6.1友 元 的 概 念非成员函数可以访问类中的公有成员,但是不能将所有的数据成员都定义为公有

2、的,这样就破坏了类的封装性。但这种严密的封装影响了程序的运行效率,尤其在成员函数多次调用时,参数传递、类型检查和安全性检查都花费许多时间开销。友元方案可以有效地解决上述问题。   友元是在类体内声明的非该类成员函数,允许友元访问该类中的私有成员或保护成员。这样好像给封装性严密的类开了一个窗口,通过这个通向外界的友元可以方便、快捷地访问该类,有效地提高了运行效率,但付出的代价是破坏了类的封装性。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类则被称为友元类;甚至友元可以是一个类的成

3、员函数,称为友元成员函数。类的友元是在该类的定义体内声明的,在声明前面加上关键字friend。友元不是该类的成员,但允许它访问类中的所有成员,包括私有成员。6.2定义友元的方法6.2.1友元函数友元函数是能够访问类中的私有成员和其他成员的非成员函数。定义某函数f()是类A的友元函数的方法是:classA//定义类A{friend返回值类型f(形参列表);//定义函数f()是类A的友元函数};如果一个函数和一个类的关系密切,需要频繁地访问该类的私有成员或保护成员,那么把这个函数定义为该类的友元函数,

4、直接访问该类的所有成员,比通过该类的公有成员函数访问更加有效。【例6.1】对友元类定义的范例:设计一个时间类的友元函数。//-------------------------//c0601.cpp//-------------------------#includeclasstime{private:inthour;//小时intminute;//分钟intsec;//秒public://构造函数声明time(int,int,int);//声明友元函数friendvoidd

5、isplay(time&t);};//构造函数定义time::time(inth,intm,ints){hour=h;minute=m;sec=s;}//定义友元函数,按格式显示时间,访问时间类的私有成员voiddisplay(time&t){cout<

6、me类的友元函数,所以它能够访问time类对象的私有成员变量。6.2.2友元类当一个类作为另一个类的友元时,就意味着这个类的所有成员函数都是另一个类的友元函数。定义类A是类B的友元类的方法是:classB//定义类B{friendclassA;//定义类A是类B的友元类};定义友元类时需要注意的是友元类不具有相互性和传递性,即假定类B是类A的友元,并不能认为类A是类B的友元(相互性);假定类A是类B的友元,类B是类C的友元,并不能认为类A是类C的友元(传递性)。并且友元类不能继承。【例6.2】友元

7、类定义的范例。//-------------------------//c0602.cpp//-------------------------#include#includeclassstudent{friendclassteacher;//声明teacher类是student类的友元类private:charstu_name[10];//学生姓名charstu_No[20];//学生学号doublescore;//学生成绩public://构造函数s

8、tudent(charname[],charNo[]){strcpy(stu_name,name);strcpy(stu_No,No);score=0;}//析构函数~student(){};voidshow(){cout<<"student_Name:"<

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

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

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