ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:69.35KB ,
资源ID:29791139      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29791139.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第9章 类和对象.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第9章 类和对象.docx

1、第9章 类和对象第9章 类和对象本章目的:1、 理解面向对象程序设计的思想;2、 掌握类的声明和对象的定义方法;3、 掌握类成员函数的定义和调用方式以及类成员的引用方法。9.1 引言到目前为止,我们所学习的C+的编程方法都属于面向过程的程序设计,不是真正意义上的C+。这些知识对于解决规模较小的程序,程序设计人员可以将问题转化为若干个模块,通过实现每一个模块完成任务,但是这样的方法对于大规模的程序就显得力不从心了,那么从这次课开始我们就要进入C+的精髓部分面向对象的程序设计。该设计方法就是为解决大规模程序设计中出现的困难而产生的(具体思想详见附件)。9.2 类的声明和对象的定义首先要明确类和对象

2、的关系 类是对象的抽象,对象是类的具体实例(instance); 类是抽象的,不占用内存,而对象是具体的,占用存储空间。在C+中,需要先声明一个类类型,然后再用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。9.2.1 声明类类型的方法class 类名private: 私有的数据和成员函数; public: 公用的数据和成员函数; protected: 受保护的数据和成员函数;private、 protected、public称为成员访问限定符(member access specifier)。注意:如果在类的定义中不指定限定符,则系统

3、默认为私有的(private)。说明:(1) 用private声明的成员称为私有成员,它只能被类中的成员函数访问,不能被类外访问,但可以被友元类的成员函数访问(后面讲到)。(2) 用protected声明的成员称为受保护成员,它不能被类外访问(这点与私有成员类似),但可以被派生类的成员函数访问(后面讲到)。(3) 用public声明的成员称为公有的成员,它可以被类中的成员函数访问,也可以被类外访问。9.2.2 对比结构体类型struct student int num; char name20; char sex;Student stud1;定义了结构体类型,并定义了结构体变量class st

4、udent int num; char name20; char sex; void display() cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexendl; ;student stud1;定义了类类型,以及类变量。class中 display为成员函数,函数体是具体的操作。从上述可以看出,二者的区别为:(1) 结构体中只有成员变量,没有成员函数,而类中是二者兼有的;(2) 结构体中的成员没有访问限制,即均可通过结构体变量引用,而类成员只有public成员才可通过对象引用。9.2.3 对象的定义与结构体变量定义的方法类似,同样也有

5、三种方法:A. 先声明类类型,再定义对象例如:class student private: public: protected: ;student stud1B. 定义类类型的同时定义对象例如:class student private: public: protected: stud1;C. 不出现类名直接定义对象例如:class private: public: protected: stud1;9.3 类的成员函数9.3.1 成员函数的定义类的成员函数(简称类函数)是函数的一种,它的用法和作用与普通函数基本上是一样的。其定义方式如下:(1) 在类体中定义例如:函数返回值类型 函数名 (参

6、数表)/函数体可以被指定为private(私有的)、public(共有的)或protected(受保护的)(2) 在类外定义例如:函数返回值类型 类名:函数名 (参数表)/函数体在类外定义类函数时,必须在函数名前面加上类名和作用域限定符”:”。例如:class student public: void display(); private: int num; char name20; char sex;void student : display() cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexendl;student stud1;

7、(3) inline成员函数 类的成员函数也可以指定为内置函数。 C+要求对一般的内置函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline。例如:class student public: inline void display(); private: int num; char name20; char sex;inline void student : display() cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexabc; ;coutsizeof(time)endl;答案:129.4 对象成员的引用现在

8、大家来回忆一下对结构体成员的访问方法,其实对于访问对象中的成员,其方法与访问结构体成员类似,可归纳为:(1) 通过对象名和成员运算符访问对象中的成员;(2) 通过指向对象的指针访问对象中的成员;(3) 通过对象的引用变量访问对象中的成员。例9.2 对于如下类和对象的定义class student public: void display(); int num; char name20; char sex;void student : display() cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexnum=1001; 或(*p).nu

9、m=1001;(3) student &stud2=stud1;stud2.num=1001;思考:如果将例9.2中程序做如下修改,上述引用还对吗?为什么?class student public: void display(); private: int num; char name20; char sex;void student : display() cout“num:”numendl; cout“name:”nameendl; cout“sex:”sexendl;student stud1,*p;9.5 类的封装性与信息隐蔽(1) 公用接口与私有实现的分离 如果不必公开的信息,使用:

10、private 要公开的,才使用:public(2) 类声明和成员函数定义的分离 为便于多个程序使用某类,应当把类的声明和成员函数的声明放在头文件中(即.h文件),把成员函数的定义放在另一个文件中(即.cpp文件)。(3) 面向对象程序设计中的几个名词 “方法”(method):“方法”是指对数据的操作(类的成员函数)。一个“方法”对应一种操作。 外界是通过发“消息”来激活有关方法的。 “消息”:其实就是一个命令,由程序语句来实现。 发送“消息”:一个对象通知另一个对象执行它的某条成员函数。 接收“消息”:一个对象接收到另一个对象要求它执行它的某条成员函数的信息。例如对例9.2中的程序段,对象

11、就是stud1,方法即为display(),而stud1.display()是消息例9.3 #include using namespace std;class Timepublic: int hour; int minute; int sec;int main( ) Time t1; cint1.hour; cint1.minute; cint1.sec; coutt1.hour“:“; cout t1.minute“:“; coutt1.sec endl; return 0;例9.4 找出一个整型数组中元素的最大值(用类处理)。/Array_max.h文件class Array_max p

12、ublic: void set_value( ); void max_value( ); void show_value( ); private: int array10; int max; ;/Array_max.cpp文件#include #include Array_max.husing namespace std;void Array_maxset_value( ) int i; for (i=0;iarrayi;void Array_maxmax_value( ) int i; max=array0; for (i=1;imax) max=arrayi;void Array_maxs

13、how_value( ) coutmax=max;/main.cpp文件#include #include Array_max.husing namespace std;int main( ) Array_max arrmax; arrmax.set_value( ); arrmax.max_value( ); arrmax.show_value( ); return 0;例9.5 矩形类。/CRectangle.hclass CRectangle int x, y; public: void set_values (int,int); int area () return (x*y); ;/

14、CRectangle.cpp#include CRectangle.hvoid CRectangle:set_values (int a, int b) x = a; y = b;/main.cpp#include #include CRectangle.husing namespace std;int main () CRectangle rect; rect.set_values (3,4); cout area: rect.area(); return 0;程序运行结果:例9.6 复数类。/Complex.h#include using namespace std;class Compl

15、exprivate: double real,imag;public: void setValue(double, double); double getReal()return real; double getImag()return imag; void display(); Complex conjugate();/main.cpp#include #include Complex.husing namespace std;void main() Complex c,conj; c.setValue(1.1,2.1); cout 实部为: c.getReal() endl; cout 虚

16、部为: c.getImag() endl; conj = c.conjugate(); cout 复数的; c.display(); cout 共轭为:; conj.display(); cout endl;/Complex.cpp#include Complex.hvoid Complex:setValue(double a, double b) real = a; imag = b;void Complex:display() cout 0) cout +; cout imag; cout i;Complex Complex:conjugate() Complex con; con.real = real; con.imag = -1.0 * imag; return con;程序运行结果:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1