- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学目标: 教学内容: 2.1 面向对象的基本概念 观点: 自然界是由实体(对象)所组成。 程序设计方法: 使用面向对象的观点来描述、模仿并处理现实问题。 要求: 高度概括、分类、和抽象。 目的: 实现软件设计的产业化。 类和对象 对象是现实世界中一个实际存在的事物 对象的静态特征 对象的行为 类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。 对象之间的交互:发送消息 封装 封装的目的是隐藏对象的内部的实现细节。 通过封装,可以将对象的外部接口与内部的实现细节分开。 目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。 继承 继承是C++中支持层次分类的一种机制,允许程序员在保持原有类特性的基础上,对新类进行更具体的说明。 实现:声明派生类——2.3 多态性 多态:同一名称,不同的功能实现方式。 目的:标识统一,减少程序中标识符的个数; 接口统一,增加程序的灵活性 实现:——2.4 编译时的多态性:重载函数 运行时的多态性:虚函数 2.2 类与对象的定义 类是C++的灵魂,如果不真正掌握类,就不能真正掌握C++ C++中的类就是一种用户自己定义的数据类型,和其它数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。 为了封装的需要,一般将类的定义放在一个.h文件中,而将类的成员函数的实现放在一个.cpp文件中。 2.2.1 类的定义 class 类名称 { public: 公有成员(外部接口) private: 私有成员 protected: 保护成员 } ; 例2.1:圆类的定义 见教材24页 说明: 类的数据成员(成员变量) :与一般的变量声明相同,但需要将它放在类的声明体中,一般为私有访问属性。 类的成员函数定义: 在类中说明原型,类外给出函数体实现,函数名之前必须加类名和作用域区分符限定 将成员函数定义为内联函数: 成员函数在类的内部定义,此时无须使用inline关键字,成员函数自动为内联函数。 成员函数在类内声明,在类外定义。但在类外定义时,要加关键字inline。定义与声明放在同一.h文件中。 const成员函数 const成员函数: 不修改数据成员的值, 在程序中如果不小心修改了这个成员函数中的对象,则编译器会产生一个语法错误信息。 const 成员函数的定义方法: 在函数的原型和定义中,在函数参数表和函数定义的左花括号之间加入const关键字。 类的成员函数允许重载,允许带缺省参数值。 2.2.2 构造函数 性质: 与类同名、无返回类型 在对象创建时由系统自动调用 允许重载、带缺省值 如果类中未声明,则系统自动生成一个缺省形式的构造函数,形如:类名(){ } 构造函数举例--- CCircle类 class CCircle { public: CCircle() // 无参(缺省)构造函数 { radius = 1; } CCircle(double r) // 带参构造函数 …… private: double radius; }; CCircle::CCircle(double r) { radius = r0 ? r : 1; } 拷贝构造函数 拷贝构造函数是一种特殊的构造函数,其形参为本类对象的引用。 class 类名{ public : 类名(形参);//构造函数 类名(类名 对象名);//拷贝构造函数 …… }; 类名:: 类名(类名 对象名)//拷贝构造函数的实现 { 函数体 } 拷贝构造函数举例 class CCircle { public: CCircle ( float m=1, float n=1, float r=1 ); CCircle ( const CCircle c ) // 拷贝构造函数 { radius = c.radius; } …… }; 拷贝构造函数调用之一 当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现对象的拷贝赋值。 void main( ) { CCircle c1; CCircle c2(c1);//拷贝构造函数被调用 } 拷贝构造函数调用之二 若函数的形参为类对象按值传递时,实参赋
文档评论(0)