(3)--第3章 类与对象面向对象程序设计.pdf

上传人:奉*** 文档编号:96641453 上传时间:2024-02-01 格式:PDF 页数:42 大小:1.54MB
返回 下载 相关 举报
(3)--第3章 类与对象面向对象程序设计.pdf_第1页
第1页 / 共42页
(3)--第3章 类与对象面向对象程序设计.pdf_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《(3)--第3章 类与对象面向对象程序设计.pdf》由会员分享,可在线阅读,更多相关《(3)--第3章 类与对象面向对象程序设计.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章 类与对象计算机科学与工程学院学习目标学习目标掌握类的概念掌握类的概念理解对象与类的关系,掌握对象的创建和使用理解对象与类的关系,掌握对象的创建和使用掌握构造函数、析构函数的概念及使用方法掌握构造函数、析构函数的概念及使用方法掌握内存动态分配的概念和使用方法。掌握内存动态分配的概念和使用方法。掌握对象数组和对象指针。掌握对象数组和对象指针。计算机科学与工程学院类的定义格式类的定义格式class 类名类名 public:数据成员或成员函数数据成员或成员函数protected:数据成员或成员函数数据成员或成员函数private:数据成员或成员函数数据成员或成员函数;计算机科学与工程学院问题:

2、有若干本图书,输入、输出图书信问题:有若干本图书,输入、输出图书信息?息?计算机科学与工程学院声明一个图书类声明一个图书类分析:图书都有分析:图书都有书名书名、作者作者、出版社出版社和和价格价格;对于图书的基本操作有对于图书的基本操作有输入、输出图书信息。输入、输出图书信息。因此首先抽象出所有图因此首先抽象出所有图书都具有的属性:书名、书都具有的属性:书名、作者、出版社和价格;作者、出版社和价格;然后用成员函数实现对然后用成员函数实现对图书信息的图书信息的输入输入和和输出输出。class Bookpublic:void Input();void Print();private:char tit

3、le20;char author10;char publish30;float price;计算机科学与工程学院说明说明类声明中的类声明中的private、protected和和public关键字可以按任意顺序出关键字可以按任意顺序出现。为了使程序更加清晰,应将私有成员、保护成员和公有成员归类现。为了使程序更加清晰,应将私有成员、保护成员和公有成员归类存放。默认时的访问权限为私有的(存放。默认时的访问权限为私有的(private)。)。对于一个具体的类,类声明中的对于一个具体的类,类声明中的private、protected和和public三个三个部分不一定都要有,但至少应该有其中一个部分。部

4、分不一定都要有,但至少应该有其中一个部分。数据成员可以是任何数据类型,但不能用自动(数据成员可以是任何数据类型,但不能用自动(auto)、寄存器)、寄存器(register)或外部()或外部(extern)类型进行说明)类型进行说明。由于类是一种数据类型,系统并不会为其分配内存空间,所以不能在由于类是一种数据类型,系统并不会为其分配内存空间,所以不能在类声明中给数据成员赋初值。类声明中给数据成员赋初值。计算机科学与工程学院问题:有若干长方形,求周长和面积?问题:有若干长方形,求周长和面积?计算机科学与工程学院声明一个长方形类。声明一个长方形类。分析:长方形有分析:长方形有长长和和宽宽,对于长,

5、对于长方形可以计算其方形可以计算其面积和周长。因面积和周长。因此抽象出所有长此抽象出所有长方形都具有的属方形都具有的属性长和宽;然后性长和宽;然后用成员函数实现用成员函数实现求面积求面积和和求周长求周长运算。运算。class Rectangle public:double Area();double Perimeter();private:double length=3.5;double width=4.6;说明:说明:(1)一般将类的声明放在头文件.h中,而将成员函数的实现放在.cpp 文件中。(2)类定义必须以“;”结束。计算机科学与工程学院成员函数的定义成员函数的定义返回类型返回类型 类

6、名类名:函数名函数名(参数表参数表)/函数体函数体 void Book:Input()cintitleauthorpublishprice;void Book:Print()couttitle author publish pricencinn;p=newp=new intnintn;/表示表示newnew为具有为具有n n个元素的整型数个元素的整型数组分配了内存空间组分配了内存空间,并将首地址赋给了指针并将首地址赋给了指针p p计算机科学与工程学院西安理工大学运算符运算符newnewnew 不能对动态分配的数组存储区进行初始化不能对动态分配的数组存储区进行初始化。例如:例如:intint*p

7、*p;p=newp=new intint1010(0 0);/错误错误,不能对动态分配的数组进行初始化不能对动态分配的数组进行初始化用用newnew分配的空间分配的空间,使用结束后只能用使用结束后只能用deletedelete显式地释放显式地释放,否则这部分空间将不能回收而造成内存泄露否则这部分空间将不能回收而造成内存泄露。计算机科学与工程学院西安理工大学运算符运算符delete 运算符运算符delete用来释放动态变量或动态数组所占的内存空用来释放动态变量或动态数组所占的内存空间。间。delete运算符的应用格式如下运算符的应用格式如下释放动态变量所占的内存空间释放动态变量所占的内存空间例如

8、:例如:int*p=new int;/delete p;/释放指针释放指针p所指向的动态内存空间所指向的动态内存空间delete 指针变量名;指针变量名;delete 指针变量名;指针变量名;计算机科学与工程学院西安理工大学运算符运算符delete释放动态数组所占的内存空间释放动态数组所占的内存空间例如:例如:int*p;int*p;p=new int10;p=new int10;/delete p;/delete p;/释放为数组动态分配的内存释放为数组动态分配的内存说明说明 newnew和和deletedelete需要配套使用,如果搭配错了,程序运行时将需要配套使用,如果搭配错了,程序运行

9、时将会发生不可预知的错误。会发生不可预知的错误。在用在用delete delete 释放指针所指的空间时,必须保证这个指针所释放指针所指的空间时,必须保证这个指针所指的空间是用指的空间是用newnew申请的,并且只能释放一次,否则将产生申请的,并且只能释放一次,否则将产生指针悬挂问题。指针悬挂问题。计算机科学与工程学院西安理工大学运算符运算符delete如果在程序中用如果在程序中用newnew申请了空间,就应该在结束程序前释申请了空间,就应该在结束程序前释放所有申请的空间。这样才能保证堆内存的有效利用。放所有申请的空间。这样才能保证堆内存的有效利用。当当deletedelete用于释放由用于释

10、放由newnew创建的数组的连续内存空间时,创建的数组的连续内存空间时,无论是一维数组还是多维数组,指针变量名前必须使用无论是一维数组还是多维数组,指针变量名前必须使用 ,且,且 内没有数字。内没有数字。例例3 3-14 14 动态创建类动态创建类PointPoint的对象的对象计算机科学与工程学院西安理工大学对象数组和对象指针对象数组和对象指针对象数组对象数组 数组的元素可以是基本数据类型的数据,也可以是用户自数组的元素可以是基本数据类型的数据,也可以是用户自定义数据类型的数据。对象数组是指每一个数组元素都是定义数据类型的数据。对象数组是指每一个数组元素都是对象的数组。对象数组的元素是对象,

11、它不仅具有数据成对象的数组。对象数组的元素是对象,它不仅具有数据成员,而且还有成员函数。员,而且还有成员函数。声明对象数组的形式声明对象数组的形式类名类名 数组名数组名下标表达式下标表达式;数组名数组名下标下标.成员函数成员函数计算机科学与工程学院西安理工大学对象数组对象数组例例3-15 对象数组的应用:求圆的面积对象数组的应用:求圆的面积计算机科学与工程学院西安理工大学对象数组对象数组例例3-16 输出若干个平面上的点输出若干个平面上的点计算机科学与工程学院西安理工大学对象指针对象指针访问一个对象既可以通过对象名访问,也可以通访问一个对象既可以通过对象名访问,也可以通过对象地址访问。对象指针

12、就是用于存放对象地过对象地址访问。对象指针就是用于存放对象地址的变量。对象指针遵循一般变量指针的各种规址的变量。对象指针遵循一般变量指针的各种规则,声明对象指针的一般语法形式为则,声明对象指针的一般语法形式为类名类名*对象指针名;对象指针名;对象指针名对象指针名成员名成员名计算机科学与工程学院西安理工大学对象指针对象指针例如:例如:Circle*c1,c(3);c1=&c;;c1-Area();/正确,正确,c1在使用之前已指向一个已经在使用之前已指向一个已经声明过的对象声明过的对象Circle*c2=new Circle(3);c2-Area();/正确,正确,c2在使用之前已利用在使用之前

13、已利用new运算符运算符动态建立堆对象动态建立堆对象c2Circle *c3;c3-Area();/错误,不能使用没有初始化的对象指针错误,不能使用没有初始化的对象指针计算机科学与工程学院西安理工大学对象指针对象指针 例例3 3-17 17 用对象指针访问用对象指针访问CircleCircle类的成员函数类的成员函数 例例3 3-18 18 用对象指针引用用对象指针引用CircleCircle类的对象数组类的对象数组 例例3 3-19 19 输出不同正方形的面积输出不同正方形的面积计算机科学与工程学院西安理工大学自引用指针自引用指针this 当定义了一个类的若干对象后,每个对象都有属于自己的数

14、据当定义了一个类的若干对象后,每个对象都有属于自己的数据成员,而同一类的不同对象将共同拥有一份成员函数的拷贝,成员,而同一类的不同对象将共同拥有一份成员函数的拷贝,那么在执行不同对象所对应的成员函数时,各成员函数是如何那么在执行不同对象所对应的成员函数时,各成员函数是如何分辨出当前调用自己的是哪个对象呢?分辨出当前调用自己的是哪个对象呢?使用使用this指针时应该注意以下几点:指针时应该注意以下几点:this指针是一个指针是一个const指针,不能在程序中修改它或给它赋值。指针,不能在程序中修改它或给它赋值。this指针是一个局部数据,它的作用域仅在一个对象的内部。指针是一个局部数据,它的作用域仅在一个对象的内部。静态成员函数不属于任何一个对象。在静态成员函数中没有静态成员函数不属于任何一个对象。在静态成员函数中没有this指针。指针。例例3-20 this应用举例:通过成员函数应用举例:通过成员函数copy实现实现Square类类对象的赋值对象的赋值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁