第章c语言进阶.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
The Standardization Office was revised on the afternoon of December 13, 2020 The Standardization Office was revised on the afternoon of December 13, 2020 第章C语言进阶 第5章C++语言进阶 教学提示:在第4章已经介绍了C++中关于类的大部分内容,本章继续讲解和类相关的内容。主要包括:友元,this指针,类的继承,多态和虚拟函数等,它们是编写面向对象程序的基础。 教学目标:掌握友元函数和友元类的概念,掌握友元的使用,理解友元的局限性;理解this指针的概念;理解多态性的含义,多态对于继承的意义,掌握多态的工作原理;理解抽象类与具体类的区别;熟练运用类的继承、类的多重继承、虚函数、纯虚函数,编写层次分明、结构清晰的程序。 友元和this指针 友元 1. 友元函数 在第3章重载运算符时已经用到了友元函数,但并没有对友元函数作详细的介绍。其实,友元函数和普通的C++函数不同的只是,它可以访问类的保护和私有成员。利用友元函数使程序编写更加方便,提高了效率。但是使用友元函数破坏了类的封装性,因此一般只在能够提高程序效率的前提下使用友元。 定义友元函数很简单,在类里声明一个普通函数,标上关键字friend,就成了该类的友元,就可以访问该类的一切成员。 例如,下面的例子定义了两个类,rect类和point类,并声明函数inrect是它们的友元函数,因此inrect函数可以访问rect类和point类中的非公有成员。 class rect; class point { private: int x; int y; public: point(int xx=0,int yy=0):x(xx),y(yy){ }; friend int inrect(const point,const rect);元成员函数 当一个类的某个成员函数被宣布为另一个类的友元时,在这个成员函数内就可以访问另一个类的非公有数据。例如: class student; class teacher { …… public: void teacher::setscore(student s,int i) { =i;} }; class student {· private: int score; public: friend void teacher::setscore(student s,int i); }; teacher类的成员函数setscore(students,int i) 被声明为student类的友元,因此teacher类的对象可以通过其成员函数setscore修改student类对象的非公有数据成员。例如: student s1; teacher t1; (s1,90); 3. 友类 整个类是另一个类的友元,该友元称为友类,友类的每个成员函数都可以访问另一个类的保护或私有的数据成员。即,当类A宣布为类B的友类时,类A的所有成员函数都可以访问类B的非公有成员。例如: class student; class teacher { …… public: void teacher::setscore(student s,int i) { =i; } }; class student { private: int score; public: friend class teacher;类的所有对象都共用static类成员。注意,我们在类ShareVar中声明了静态整数变量num,同时还在程序中将num作为一个全局变量来定义。前面提到过,这样做是必须的,因为在类ShareVar中我们只是声明变量num而没有为它分配内存。由于在程序中没有对变量num作初始化,所以C++默认将num初始化为0,因此第一次调用函数shownum()时,程序输出0。接下来,对象a将num的值设置为10。然后,对象a和b都调用函数shownum()来输出num的值。因为在程序中变量num只有一个副本,并且由对象a和b共用,所以两个函数都将输出

文档评论(0)

Zhou666999 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档