第12章节类的其他特性.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章节类的其他特性

第12章 类的其他特性 第12章 类的其他特性 12.1 友元函数 12.2 虚函数 12.3 静态成员 * * Visual C++程序设计 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 12.1.1 友元函数的概念 友元函数是在类体中定义或说明的外部函数,它不是类的成员函数,却能不受限制地访问类中所有访问权限的成员。 12.1.2 友元函数的定义 1. 类中定义格式 friend 函数类型 函数名称(形参列表){....} 2. 类中说明,类外定义 (1) 类中说明格式 friend 函数类型 函数名称(形参列表); (2)类外定义格式 函数类型 函数名称(形参列表){....} 12.1 友元函数 友元函数在类外定义时,函数类型前不能加friend;函数名前没有“类名::”。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例12-1 用友元函数求圆柱体的体积。 const float PI=3.1415 ; class A{ float r,h; public: A(float a,float b); float getr(){return r;} friend float geth(A a) { return a.h; } //A friend float volum(A );//B }; A:: A(float a,float b){r=a;h=b;} float volum(A a){ return PI*a.r*a.r*a.h;} void main() { A a1(2,5); coutvolum(a1)\n”; //C cout PI*a1.getr()*a1.getr()*geth(a1)\n”; //D } 12.1 友元函数 (1)A行能否改为: { return h;} (2)C行能否改为: couta1.volum(a1); (3)去掉B行,程序能否运行? (4)在不改变成员访问权限的前提下,若把D行改为: cout PI*a1. r*a1. r*a1. h; 程序应作怎样的修改? Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 使用用友元函数时注意: 友元函数不是成员函数,没有this指针,不能直接使用类的成员,必须通过对象或指向对象的指针引用成员,使用格式为: 对象. 成员 ,或: 指针-成员 友元函数要使用对象必须通过参数(对象或指向对象的指针)传入对象。 友元函数的调用不能通过对象调用,应该直接调用。 友元函数的作用域不是类的作用域,其定义不受访问权限的限制。 友元函数可提高程序的运行效率,但破坏了类的封装性,应谨慎使用 。 12.1 友元函数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 12.1.3 成员函数用作友元 友元函数一定不是本类的成员,但可以是另一个类的成员。 例12-2 把一个类的成员函数作为另一个类的友元函数。 class B; //对类B作引用性说明 class A{ float x; public: A(float a) { x=a; } float getx( ) { return x; } void setx(B ); //此处不能定义函数体 }; class B{ float x; public: B(float a){ x=a;} f

文档评论(0)

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

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

1亿VIP精品文档

相关文档