第2章 面向对象程序设计.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 面向对象程序设计 在面向对象程序(OOP)设计思想出现之前,程序采用面向过程的设计方法,程序由数据和函数组成,函数是程序的基本组成单元。面向过程方法灵活性强,逻辑简单,但函数名众多容易造成混乱,且函数和数据分开存放,联系不够紧密,在大型软件开发中采用面向过程方式效率低下、维护困难。 2.1 类和对象 类和对象是面向对象编程的核心,类和对象类似建筑图纸和大楼的关系,类是对象的一种抽象,对象是类的一个实例。在面向对象世界中,一切事物都可以用对象表示,对象间通过消息进行交流,无需了解对象的内部实现,只要知道各个对象提供的功能接口就能实现各种高级功能。 2.1.1 类和对象的关系 类是一种自定义数据类型,类似于C中的结构体(struct),不同之处在于类中包括数据和函数,而结构体只有数据。类是对象的形式上的抽象,不是一个实际存在的事物,它规定有哪些数据成员,哪些成员函数及具体功能,是对具体事物的一种描述。对象是类的实现(implement),对象根据类的描述信息生成一个真实的事物,占用实际内存,对象生成时要调用类的构造函数(construct)进行初始化(initialize),对象释放(Release)时要调用类的析构函数做必要的清理工作。 2.1.2 定义类 使用class关键字定义一个类,可在类中添加成员变量(member variable)和函数。一般在类里声明函数,在类外实现函数以体现类的封装性,也可以声明和实现都在类中完成,适用于简短且频繁调用的成员函数。通过类名调用函数使用作用域解析操作符::,如A::Calc(); ,通过对象名调用函数使用圆点操作符.,如a.Calc(); 。 2.1.3 构造函数 类不同于C++的基本数据类型,类的结构可能非常复杂,包括大量的成员变量和函数,仅仅简单的分配一块足够大小的内存给类对象是不够的,还需要对类中的成员变量进行集中初始化。C++提供构造函数来完成类对象的初始化操作,构造函数先根据类的大小分配一块足够的内存用于存放类对象,再根据构造函数传入的参数和具体实现完成类对象的初始化。 2.1.4 析构函数 类在释放自身之前可能需要做一些清理工作,如类在使用过程中动态分配了内存空间,在类释放之前需要手动释放这些内存。析构函数用于完成类释放之前的一些清理工作,由C++自动调用。 同构造函数,析构函数名为在类名前加~符号,如~Rect(),析构函数没有返回值也没有参数列表,每个类只有一个析构函数,若没有添加析构函数,C++提供默认的析构函数,但什么也不做。 2.1.5 内联函数 程序代码中经常要调用函数,从调用点进入到函数的内部,执行完毕后返回调用点,函数调用需要一定的开销。C语言为节省函数调用带来的开销,常使用宏(macro)的方式模拟函数,如求和运算定义宏 #define SUM(a,b) (a+b) ,编译时用宏替换代码,减少函数调用的开销。 2.1.6 static成员 static(静态)关键字在不同场合具有不同的意义,也是常混淆用途的一个关键字(keyword)。在C语言中,static有两层含义,若在函数外用static修饰全局变量和函数,表示具有文件作用域,只能在本文件中可用,不能在其他文件中使用。 2.1.7 const成员 const(constant常量)修饰符用于表示一个变量在初始化后不能再被修改,即只读(read only)。const变量在定义时必须同时进行初始化,常用在函数参数中,表示该参数在函数内部不会被修改。 在传递类对象时,若采用传值方式,将类对象的拷贝传入函数,在类对象复杂的时候效率很低,一般传递类对象的引用,但若使用引用方式,类对象的值可能会被函数修改,这时使用const修饰符可限定类对象的值为只读,如GetLength(const CString str)。 2.1.8 友元 类的私有成员一般情况下在类外不可访问,但有时候需要在类外访问,可使用friend关键字,在被访问类中声明为friend的类或函数可以访问其私有成员。 使用friend修饰的类、函数称为友元类、友元函数,友元不是类的成员,但能像类成员函数一样访问类的私有成员,当需要同时访问多个类的私有成员,适宜使用友元。 2.2 运算符重载 C++提供一些运算符用于完成基本的运算,如+可以计算两个整型或浮点类型数值的和,==可以判断两个值是否相等,但都只能用于预置的基本类型。若想用+得到两个字符串拼接后的新字符串,用==判断两个类是否包含相同的值,可使用C++提供的运算符重载功能,类似函数重载,运算符可看做函数名,运算符两边的变量可看做函数的参数,调用时根据运算符的参数数目和类型自动选择匹配的版本。 2.2.1 了解运算符重载 运算符重载在定义时使用operator

文档评论(0)

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

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

1亿VIP精品文档

相关文档