《C++面向对象程序设计》谭浩强第二章.pptVIP

《C++面向对象程序设计》谭浩强第二章.ppt

  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文档。上传文档
查看更多
《C面向对象程序设计》谭浩强第二章

CPP_3 3.9 静态成员 静态成员函数示例 #include iostream.h #include string.h class Student { protected: static int count; //静态数据成员 char name[40]; public: Student(char* pN =no name) { coutCreate one student pN\n; strcpy(name,pN); count ++; coutcountendl; } ~Student( ) { coutdestruct one student “ name\n; count --; coutcountendl; } static int number( ) // 静态成员函数 { return count; } // 直接引用本类的静态数据成员 }; int Student::count=0; void fn( ) { Student s1(zhangsan); Student s2(lisi); coutStudent::number( ) endl; couts1.number( ) endl; couts2.number( ) endl; } void main( ) { fn( ); coutStudent::number “ Student::number( ) endl; } 3.10 友元 类具有封装性,类中的私有数据只有通过该类的成员函数才可以访问。如果在程序中需要访问类的私有成员,就必须通过对象来调用类的成员函数,频繁调用成员函数将影响程序运行效率。 为解决上述问题,C++ 提供一种友元机制,友元可以不通过调用成员函数就可以直接访问类的私有数据,以提高程序运行效率。 友元机制在数据封装这堵不透明的墙上开了一个小孔,友元的使用要慎重。 友元可以是一个普通函数,可以是一个类的成员函数,也可以是一个类。 3.10 友元 友元函数 特点: 在类体里边说明,在函数的类型符前加关键字friend; 在类体外定义,定义格式与普通函数相同; 友元函数是非成员函数,在调用上与普通函数相同; 友元函数可以直接访问该类中的私有成员。 例如:下面程序段说明友元函数的说明和定义方法 class X { int i; friend void func( X *, int ); // friend function declaration Public: void member_func ( int ); }; void func(X *ptr, int a) { //friend function definition ptr-i=a; } void X::member_func(int a) { //member function definition i=a; } 一个友元的综合示例 #include iostream.h #include math.h class Point {public: Point ( double i, double j ) { x=i; y=j; } void getxy( ) {cout“(”x“,”y“)”endl; } friend double Distance (Point a, Point b); private: double x,y; }; double Distance (Point a, Point b) { //友元函数的定义 double dx=a.x-b.x; double dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } void main( ) { double d11=3.0,d12=4.0; double d21=6.0,d22=8.0; Point P1(d11,d12),P2(d21,d22); P1.getxy( ); P2.getxy( ); double d=Distance(P1,P2); //友元函数调用 cout“Distance is ”dendl; } 运行结果:

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档