第2章类和对象详解.ppt

  1. 1、本文档共153页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 外部接口:此对象利用它与其它对象发生联系。 特定的访问权限:在对象外部不能访问或修改受保护的内部实现细节。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3 友元类 一个类也可以作为另一个类的友元。它的所有成员函数都成为另一个类的友元函数 例如: class Y { //… }; class X { //… friend Y; // 声明类Y为类X的友元类 //… }; 对象成员 如果一个类的对象是另一个类的数据成员,则称这样的数据成员为对象成员。例如: class A { //... }; class B { A a; //类A的对象a为类B的对象成员 public: //… }; //称类组合 使用对象成员着重要注意的问题是对象成员的初始化问题,即类B的构造函数如何定义? 例如有以下的类: class X{ 类名1 对象成员名1; 类名2 对象成员名2; … 类名n 对象成员名n; }; 一般来说,类X的构造函数的定义形式为; X::X(形参表0):对象成员名1(形参表1),…, 对象成员名i(形参表i) ,…,对象成员名n(形参表n) { // …构造函数体 } class Point { private: float x,y; //点的坐标 public: Point(float h,float v); //构造函数 float GetX(void); //取X坐标 float GetY(void); //取Y坐标 void Draw(void); //在(x,y)处画点 }; class Line { private: Point p1,p2; //线段的两个端点 public: Line(Point a,Point b); //构造函数 Void Draw(void); //画出线段 }; //函数实现略 * 类组合的构造函数设计 原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。 声明形式: 类名::类名(对象成员所需的形参,本类成员形参) :对象1(参数),对象2(参数),...... { 本类初始化 } * 类组合的构造函数调用 构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反) 若调用默认构造函数(即无形参的),则内嵌对象的初始化也将调用相应的默认构造函数。 * 类的组合举例(二) class Part //部件类 { public: Part(); Part(int i); ~Part(); void Print(); private: int val; }; class Whole { public: Whole(); Whole(int i,int j,int k); ~Whole(); void Print(); private: Part one; Part two; int date; }; 53 Whole::Whole() { date=0; } Whole::Whole(int i,int j,int k): two(i),one(j),date(k) {} //...其它函数的实现略 54 常类型 1 常引用 如果在说明引用时用const修饰,则被说明的引用为常引用。 常引用的说明形式如下: const 类型说明符 引用名 例如: int a=5; const int b=a; 其中,b是一个常引用,它所引用

文档评论(0)

三四五 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档