(CC++语言程序设计)第10章 类和对象.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
class A{ //定义类A friend void print(A); //一般友元函数声明 friend void B::BFun(A ); //友元成员函数声明 friend C; //友元类声明,C是A的友元类 private: int a,b; public: A(int x=0,int y=0) {a=x; b=y;} }; void print(A ObjA) //定义友元函数,使用对象作为参数 {couta=ObjA.a, b=ObjA.bendl; } //输出类A的私有成员a和b void B::BFun(A ObjA) //定义友元成员函数,使用引用作参数 { ObjA.a=10; } //修改类A的私有成员a void C::CFun(A ObjA) //定义友元类C的成员函数,使用引用作参数 { ObjA.b=20; } //修改类A的私有成员b void main() { A ObjA(1,2); print(ObjA); B ObjB; ObjB.BFun(ObjA); print(ObjA); C ObjC; ObjC.CFun(ObjA); print(ObjA); } 程序的运行结果为: a=1, b=2 a=10, b=2 a=10, b=20 特别说明, 友元关系是单向的, 不具有交换性, 也不具有传递性 10.6 小结 讲解了C++语言中,类、数据成员、成员函数、对象、this指针等概念。 详细剖析了构造函数和析构函数。 引入了const函数的概念。 介绍了静态数据成员和静态成员函数。 简单介绍友元函数、友元成员函数和友元类。慎用友元。 课后练习 将前面讲解的C语言版的俄罗斯方块游戏改成C++语言版的,体会面向对象程序设计思想和面向过程程序设计思想的异同。 Point () // 原点 { xVal = yVal = 0; } //… }; void main() { Point pt1(10, 20); // 笛卡儿坐标 Point pt2(60.3, 10.14); // 极坐标 Point pt3; // 原点 //… } 【例10.11 】计时器程序。 #include iostream.h #include stdlib.h class timer{ int seconds; public: timer() { seconds=0; } timer(char *t) { seconds=atoi(t);} timer(int t) { seconds=t;} timer(int min,int sec) { seconds=min*60+sec;} int gettime() { return seconds; } }; void main() { timer a,b(10),c(30),d(1,20); coutseconds1=a.gettime()endl; coutseconds2=b.gettime()endl; coutseconds3=c.gettime()endl; coutseconds4=d.gettime()endl; } 说明:在重载没有参数和带缺省参数的构造函数时,有可能产生二义性,例如: class A{ public: A(); A(int i=0); }; void main() { A a1(10); //正确 A a2; //存在二义性 //... } 10.2.4 复制构造函数 复制构造函数是一种特殊的构造函数。它用于依据已存在的对象建立一个新对象。用户可以根据自己的需要定义复制构造函数,系统也可以为类产生一个缺省的复制构造函数。 1.自定义复制构造函数 自定义复制构造函数的一般形式如下: 其中,ob是用来初始化的另一个对象的引用。 classname(const classname ob) { //复制构造函数的函数体 } class Point{ int xVal, yVal; public: Point(int x, int y) { xVal=x; yVal=y; } //构造函数 Point(const Point p) //复制构造函数 { xVal = 2*p.xVal; yVal =2+p.yVal;

文档评论(0)

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

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

1亿VIP精品文档

相关文档