友元函数ppt课件.pptVIP

  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文档。上传文档
查看更多
友元函数ppt课件

友 元 引子 因为C++的封装性和数据隐藏性,只有类自身的函数才可以不受限制的访问类的非公有成员;任何非成员函数直接访问类中非公有数据成员都会导致编译错误. 例外情况:需要非成员函数去访问类的私有数据成员. ♂解决办法:1,把私有属性(private)变为公有(public)-----但这样做违背了数据封装性和数据隐藏性; 2,可把对应的非成员函数定义为该类的友元函数来解决. 友元函数 概念:友元函数就是可以直接访问类的成员(包括私有数据成员)的非成员函数.它是一个外部函数. 一个外部函数只能通过类的授权而成为友元函数. 友元函数 类如何授权一个函数作为友元函数? 答:通过在类的定义中声明函数,并且在该函数的声明前加上关键字friend,这样类和该函数之间创建了友元关系.关键字friend不能够在类的定义之外使用. 注:类的访问限定符(public,private和protected)对友元函数是不起作用的. 内容对应教材:9.10节 1 友 元 函 数 北京科海电子出版社 · 声明友元函数的方式是在类声明中用关键词friend声明该函数,其格式 如下: friend 函数类型 友元函数名(参数表); 1 友 元 函 数 [用例]P152 例,补充完整,编译运行. 1 友 元 函 数 北京科海电子出版社 · 【用例】编写一个程序,以友元函数方式计算一个点到一条直线的距 离。 解:设计一个点类Point,它有两个公有数据成员x和y,表示点的坐标 (因为要在类外使用,所以设计为公有的)。另一个类为直线类Line, 它有3个私有数据成员a、b和c,表示直线方程ax+by+c=0,该类中设 计一个友元函数dist计算一个点到直线的距离。点(x,y)到直线 (ax+by+c=0)的距离d的计算公式如下: 1 友 元 函 数 //file.h #ifndef FILE_H #define FILE_H class Point //点类 { Public: Point(int,int); int x,y; }; class Line //线类 { public: Line(int,int,int); friend double dis(Line,point); //计算距离 private: int a,b,c; }; #endif 北京科海电子出版社 · 1 友 元 函 数 //func.cpp #includecmath Point::Point(int x1,int y1): X(x1),y(y1) { } Line::Line(int a1,int b1,int c1) :a(a1),b(b1),c(c1) { } double dis(Line m,Point n) { double d; d=abs(m.a*n.x+m.b*n.y+m.c)/(sqrt(m.a*m.a +m.b*m.b)); return d;} int main() { Point p(10,10); Line t(2,4,-3); cout“点到线的距离:”dis(t,p)endl; } // 12.7456 2友 元 类 北京科海电子出版社 · C++中允许声明一个类为另一个类的友元类(friend class)。例如, 以下语句声明类B是类A的友元类: class A { ... public: friend class B; ... }; 2 友 元 类 [用例] #includeiostream class A { int n; public: A() {n=5;} friend class B; }; class B { public: void display( A t) { cout “n=“t.nendl;} }; int main() { A a; B b; b.display(a); }

文档评论(0)

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

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

1亿VIP精品文档

相关文档