面向对象的程序设计chapter.ppt

面向对象的程序设计chapter.ppt

ID:51055219

大小:1.31 MB

页数:60页

时间:2020-03-17

面向对象的程序设计chapter.ppt_第1页
面向对象的程序设计chapter.ppt_第2页
面向对象的程序设计chapter.ppt_第3页
面向对象的程序设计chapter.ppt_第4页
面向对象的程序设计chapter.ppt_第5页
资源描述:

《面向对象的程序设计chapter.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章友元和运算符重载1主要内容友元的概念定义友元的方法运算符重载2第1章C++语言基础主要内容:数据类型,基本语句变量,函数指针和引用自定义语句,程序预处理名字空间new和delete运算符输入和输出34.1友元的概念问题引入类具有封装性,private成员只能在类定义的范围内使用,由该类对象的成员函数来访问。即外部程序不能存取类的私有成员。但是有时候需要在类的外部访问类的private成员。C++解决方法通过友元实现类外部的函数或类访问类中的private成员。44.1友元的概念友元的概念所谓友元是说一个

2、类或一个函数是另一个类的朋友(friend)元素。当一个类或一个函数是另一个类的友元时,可用“.”或“->”运算符来调用该类中的私有成员。友元种类友元类友元成员函数友元函数(不属于任何类)54.1友元的概念友元的概念当一个类A是另一个类B的友元时,称类A是类B的友元类,类B是类A的宿主类。当一个函数是另一个类A的友元时,称该函数是类A的友元函数。64.2定义友元的方法定义友元类的方法C++语言中,定义类A是类B的友元类的语句格式是:将声明语句friendclassA;加入类B的定义中。如:classB{fri

3、endclassA;…//类B的常规定义};74.2定义友元的方法定义友元类的方法友元类的声明语句可放在公有部分也可放在私有部分。一旦定义了类A是类B的友元类,则类A中的所有成员函数都是类A的友元成员函数,即类A的所有成员函数都可用“.”或“->”运算符来调用类B中的private成员或protected成员。举例84.2定义友元的方法定义友元类的方法例1设计一个类作为另一个类的友元类,说明友元类的使用方法。classB{friendclassA;private:inttopSecret;public:B(i

4、ntt=0):topSecret(t){}intGetTopSecret(void){returntopSecret;}};94.2定义友元的方法定义友元类的方法classA{intx;public:A(void){}voidchange(B&b)const{//x++;b.topSecret++;}};voidmain(){Bb;Aa;a.change(b);cout<

5、hange()限定为const,只能读而不可修改本类的数据成员值。这个限定对宿主类B的私有数据成员不起作用。友元类的成员函数可以修改宿主类的私有数据成员的值,说明定义友元类会导致类的封装性的某种程度的破坏。114.2定义友元的方法定义友元函数的方法友元函数不是当前类的成员函数,而是独立于当前类的外部函数,它可用“.”或“->”运算符访问该类的所有对象成员。友元函数的声明friend函数原型此声明可放在公有部分,也可放在私有部分。124.2定义友元的方法定义友元函数的方法友元函数定义可在类的内部,也可在类的外部

6、定义友元函数。在类的外部定义友元函数时,不必在函数名前加上“类名::”。友元函数同一般成员函数的区别是,友元函数没有this指针。134.2定义友元的方法定义友元函数的方法友元函数一般带有一个该类的入口参数。因为友元函数不是类的成员函数,不能直接引用对象成员的名字,必须通过作为入口参数传递进来的对象名或指针来引用该对象的成员。144.2定义友元的方法定义友元成员函数的方法当一个类A定义为类B的友元类时,类A中的所有成员函数都是类B的友元成员函数。当只需要类A中的若干成员函数为类B的友元时,可以只定义类A中的这

7、些成员函数为类B的友元成员函数。154.2定义友元的方法定义友元成员函数的方法友元成员函数的声明:classA{返回类型func(参数);…};classB{friend返回类型类A::func(参数);…};164.2定义友元的方法定义友元成员函数的方法说明当类A的成员函数作为类B的友元成员函数时,必须先定义类A(符合C++语言先定义、后使用的基本原则。),不同于友元类。声明友元成员函数时,要加上成员函数所在的类的类名。类A中的这些成员函数不仅可以访问所在类对象中的private成员和public成员,还可

8、以访问类B对象中的private成员和public成员。174.3运算符重载运算符重载的概念运算符重载通过创建运算符函数来实现。运算符函数定义了重载的运算符所要进行的操作,这种操作通常作用在一个类上。运算符函数的两种形式类的成员函数友元函数运算符函数名operator@@为所要重载的运算符如:operator+。184.3运算符重载运算符重载和函数重载的区别对于运算符重载,重载的是运算符。即使运算符

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

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

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