- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
友元与运算符重载演示文件修改版
C++程序设计语言 第 9 章 友元与运算符重载 第9章 友元与运算符重载9.1 友元函数与友元类9.2 运算符重载概述9.3 一元运算符重载9.4 二元运算符重载 ● 实验 ● 课堂练习 计算机科学与工程学院 JIANGSU UNIVERSITY of SCIENCE TECHNOLOGY 计算机科学与工程学院 JIANGSU UNIVERSITY of SCIENCE TECHNOLOGY 学好程序设计的根本方法是 程序! 写 9.1 友元函数与友元类 为了强调数据的安全性,程序设计中通常将一些关键成员设为私有访问特性,只允许类的成员函数直接访问,其他函数必须间接访问。同时,C++通过友元方案,向用户提供了从类的外部直接访问类中所有访问权限成员的接口,包括: (1) 友元函数——把外部函数说明为本类的友元,则在该外部函数中可以直接访问本类的所有访问权限成员; (2) 友元成员函数——把其他类的成员函数说明为本类的友元,则该成员函数是本类的友元函数; (3) 友元类——把其他类说明为本类的友元,则该类的所有成员函数都是本类的友元函数。 1. 友元函数概念 友元函数是在类中用关键字friend说明或定义的外部函数。与普通外部函数相比,成员的访问权限对其不起作用,即友元函数可以访问类中所有访问权限的成员;但它不是成员函数。 2. 友元函数定义(1) 类中说明,类外定义 ① 类中原型说明: friend 类型 函数名(形参列表); ② 类外定义: 类型 函数名(形参列表){ 函数体 }(2) 类中直接定义 friend 类型 函数名(形参列表){ 函数体 } 9.1.1 友元函数 例9-1 求圆柱体的体积(友元函数、成员函数、普通函数比较)#includeiostream.hconst float PI=3.1415 ;class A { float r,h;public: A(float a,float b){r=a;h=b;} float v1( ){ return PI*r*r*h;} float getr(){return r;} float geth(){return h;}}; float v2(A t){ return PI*t.getr()*t.getr()*t.geth();} float v3(A t){ return PI*t.r*t.r*t.h;} 9.1.1 友元函数 void main(){ A a1(25,40); couta1.v1( )\n; coutv2(a1)\n; coutv3(a1)\n;} friend float v3(A ); friend float v4(A *p){return PI*(p-r)*(p-r)*(p-h); } coutv4(a1)\n; 使用友元函数时注意: (1) 类的访问控制权限只对类的成员起作用,对友元函数不起作用,因此友元函数的声明可以出现在类中的任何位置。 (2) 友元函数没有this指针,不能直接使用类的成员,必须指明成员所属的对象。所以友元函数的形参通常是类的对象、对象的引用、指针。 (3) 友元函数是外部函数,不能通过对象调用,应该直接调用。 (4) 友元函数能提高程序的运行效率,但破坏了类的封装性,应谨慎使用。 (5) 友元关系不具有继承性。假设函数f是基类A的友元函数,类B是类A的派生类,而函数f并不是类B的友元函数,即函数f中不能直接访问类C的私有成员。 9.1.1 友元函数 1. 运算符重载概念 通常情况下, C++运算符的操作数为基本类型的数据,不能进行对象的运算。若要使对象参与运算,必须重新定义运算符的运算规则,称为运算符重载。运算符重载实质是定义运算符重载函数,即通过对象成员的运算实现对象的运算。为了方便对成员的操作,该函数通常是类的成员函数或者是友元函数。 2. 运算符重载方法 定义运算符重载函数,函数名由关键字operator与其后的运算符组成。 (1) 用类的成员函数重载 函数类型 operator 运算符 (形参列表) { 函数体 } (2) 用类的友元函数重载 friend 函数类型 operator运算符 (形参列表)
原创力文档


文档评论(0)