第3章关于类和对象的进一步讨论(免费阅读).ppt

第3章关于类和对象的进一步讨论(免费阅读).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 例3.12 友元函数的简单例子 class Time { public: Time(int,int,int); friend void display(Time ); private: int hour; int minute; int sec; }; 1.将普通函数声明为友元函数 * Time::Time(int h,int m,int s) { hour = h; minute = m; sec = s; } void display(Time t) { coutt.hour:t.minute :t.secendl; } int main() { Time t1(10,13,56); display(t1); return 0; } 必须加上对象名 * 例3.13 友元成员函数的简单应用 2.友元成员函数 class Date; //Date类的提前引用 class Time {private: int hour; int minute; int sec; public: Time(int, int, int); void display(Date ); }; * class Date {public: Date(int,int,int); friend void Time::display(Date ); private: int month; int day; int year; }; Time::Time(int h,int m,int s) { hour=h; minute=m; sec=s; } * void Time::display(Date d) { coutd.month/d.day /d.yearendl; couthour:minute :secendl; } Date::Date(int m,int d,int y) { month=m; day=d; year=y; } int main() { Time t1(10,13,56); Date d1(12,25,2004); t1.display(d1); return 0; } * 一般情况下,类必须先声明,然后才能使用。 但在特殊情况下,在正式声明类之前,需要使用该类名,就需要类提前引用,它只包含类名,不包括类体。 只有在正式声明一个类以后才能用它去定义类对象。class Date; //提前引用 Date d1; //error 提前引用 * 3.一个函数(包括普通函数和成员函数)可以被多个类声明为“朋友”, 这样就可以引用多个类中的私有数据。 * C++允许将一个类声明为另一个类的友元。假定A类是B类的友元类,A类中所有的成员函数都是B类的友元函数。 在B类中声明A类为友元类的格式: friend A; 注意: 友元的关系是单向的,不是双向的。 友元的关系不能传递。 3.10.2 友元类 * 对于功能相同而数据类型不同的函数,不必一一定义各个函数,可以定义一个可对任何类型变量进行操作的函数模板。 对于功能相同的类而数据类型不同,不必定义出所有类,只要定义一个可对任何类进行操作的类模板。 3.11 类模板 * class Compare_int { public: Compare_int(int a,int b){x=a;y=b;} int max(){return (xy)?x:y;} int min(){return (xy)?x:y;} private: int x,y; }; class Compare_float { public: Compare_float(float a,float b){x=a;y=b;} float max(){return (xy)?x:y;} float min(){return (xy)?x:y;} private: float x,y; }; 3.11 类模板 * templateclass numtype class Compare { public: Compare(numtype a,numtype b){x=a;y=b;} num

文档评论(0)

liudao + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档