C++类和对象.ppt_第1页
C++类和对象.ppt_第2页
C++类和对象.ppt_第3页
C++类和对象.ppt_第4页
C++类和对象.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考 C 程序设计教程p56 p64 第五讲类和对象 一 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 类与对象概述 对象 现实世界中某个具体的物理实体在计算机逻辑中的映射和体现 现实中的对象都具有属性和行为 类与对象概述 cont 类 是一种抽象的数据类型 是同种对象的集合与抽象 是具有共同行为和属性的若干对象的统一描述体 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 狗类行为吠叫属性名字品种年龄颜色 classDog public voidyelp private stringname stringbreed intage stringcolor 映射 抽象 类的声明 classDog 类名 public voidyelp 成员函数private stringname stringbreed intage stringcolor 数据成员 a 1 类的声明 cont 类的声明 class public protected private 分号 类的声明 cont classTDate public voidsetDate constintaYear constintaMonth constintaDay boolisLeapYear const voiddisplay const private intm iYear intm iMonth intm iDay a 2 类的声明 cont 类名 class是声名类的关键字 是标示符 通常以T或者C开头 以示与对象 函数 变量区别类的成员 包含数据成员和成员函数两部分访问权限修饰符 包括公有的 public 私有的 private 和保护的 protected 三类 公有的成员用public来说明 一般为一些成员函数 它是提供给用户的接口功能 私有的成员用private来说明 私有部分一般为类的成员变量 用来描述对象的属性 类的声明 cont 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 类的定义 类的定义 类体内定义 类体外定义 类的定义即给出成员函数具体的功能实现 类的定义 cont classTPoint public voidsetX intaX m iX aX voidsetY intaY m iY aY voidmove intaX intaY m iX aX m iY aY voiddisplay const cout X m iX endl cout Y m iY endl private intm iX intm iY 类体内定义 5 1 类的定义 cont 类体外定义 expression voidDog yelp cout WoWo endl 类的定义 cont classTDate public voidsetDate constintaYear constintaMonth constintaDay boolisLeapYear const voiddisplay const private intm iYear intm iMonth intm iDay a 2 类的定义 cont voidTDate setDate constintaYear constintaMonth constintaDay m iYear aYear m iMonth aMonth m iDay aDay boolTDate isLeapYear const return m iYear 4 a 2 类的定义 cont 注意 成员函数类体外定义时 必须在函数名前面加 类名 若无 类名 则该函数不是成员函数而是全局函数 类体外定义成员函数时 类体内必须声明该成员函数 不允许在类的声明部分对成员变量进行初始化 将类的声明与定义分开 类的声明放到头文件 定义放到源文件中 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 对象的声明与成员访问 狗类行为吠叫属性名字品种年龄颜色 莱丝行为莱丝 吠叫属性莱丝 名字 莱丝莱丝 品种 黑贝莱丝 年龄 三岁莱丝 颜色 黑色 声明莱丝是一只狗 对象的声明与成员访问 cont 对象名表 一个对象 对象数组 指向对象的指针 多个对象 TDatedate Dogdog TDatetoday tomorrow TDate pDate TDatearray 10 对象引用 Dogdg Dog 对象的声明与成员访问 cont TDatetoday today setDate 1998 10 19 boolisLeap today isLeapYear TPointpoint point setX 100 point setY 100 point move 50 50 point display 对象的声明与成员访问 cont TDate pDate newTDate pDate setDate 1998 10 19 boolisLeap pDate isLeapYear deletepDate TPoint pPoint newTPoint pPoint setX 100 pPoint setY 100 pPoint move 50 50 pPoint display deletepPoint 对象的声明与成员访问 cont 对象和指向对象的指针同样可以进行取地址和取值操作 对象的声明与成员访问 cont TDate pDate newTDate pDate setDate 1998 10 19 boolisLeap pDate isLeapYear deletepDate TPointpoint 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 实例化对象 类的实例化 栈区 堆区 静态存储区 全局区 实例化对象 栈区中的对象 法一 先声明类类型 再定义对象 推荐 classStudent public voiddisplay const private intm iNum stringm strName charm cSex Studentstud1 classStudentstud1 法二 在声明类的同时定义对象 classStudent public voiddisplay const cout num m iNum endl cout name m strName endl cout sex m cSex endl private intm iNum stringm strName charm cSex stud1 stud2 实例化对象 栈区中的对象 cont 法三 不出现类名 直接定义对象 class 省略类名 public voiddisplay const cout num m iNum endl cout name m strName endl cout sex m cSex endl private intm iNum stringm strName charm cSex stud1 stud2 实例化对象 栈区中的对象 cont 注意 通常采用先定义类 后定义对象的方法 其他方法不使用对象占据内存单元而类类型不占据内存单元以上方法创建的对象均在栈区 实例化对象 栈区中的对象 cont 1 概念 用new创建的无名对象 存储在堆区2 建立堆对象 new类名 new类名 无符号整型表达式 实例化对象 堆区中的对象 可为无符号整型变量 实例化对象 堆区中的对象 cont constintKArrSize 100 TDate pdate newTDate TDate arry newTDate KArrSize Dog dog newDog Dog dogArr newDog KArrSize 3 释放堆对象 delete指针名 delete 指针名 例1 A ptr NULL ptr newA deleteptr 例2 A ptr NULL ptr newA 5 delete ptr 实例化对象 堆区中的对象 cont 注意 delete只能回收由new返回的指针指向的内存空间 包括空指针 一个指针只能delete一次 删除对象数组时无论几维array delete前都只有一个 确认不用的空间一定要delete 实例化对象 堆区中的对象 cont 实例化对象 全局区中的对象 全局区中的对象和内置类型static变量存储类别规则是相同 classStudent public voidsetName conststringaName m strName aName voiddisplay const cout m strName endl private stringm strName b1 实例化对象 全局区中的对象 cont staticStudents stu2 intmain Stdudentstu stu setName Jim stu display staticStudents stu1 s stu1 setName Lily s stu1 display s stu2 setName Morrison s stu2 display return0 实例化对象 对象的存储 思考 对象的存储方式 对象1 对象2 对象10 成员函数 data1 data2 data10 对象的存储方式 实例化对象 对象的存储 cont includeusingnamespacestd classTime public voidset private intm iHour intm iMinute intm iSec voidTime set cin m iHour m iMinute m iSec intmain cout sizeof Time endl return0 5 2 实例化对象 对象的存储 cont 注意 无论成员函数在类内还是在类外定义 成员函数都不占用对象的存储区说成员函数是对象的只是从逻辑角度上说的 而非物理角度而言对象的存储类别和内置类型变量相同 实例化对象 对象的存储 cont 实例化对象 对象的引用 思考 对象中成员的引用方法 成员的访问方式 回忆结构体的访问 include includeusingnamespacestd structStudent stringnum charsex stringname Studentstu intmain stu num 007 stu name haha stu sex M cout stu num stu sex stu name endl return0 通过对象名和 访问通过对象指针访问通过对象引用访问 成员的访问方式 成员的访问方式 cont 法一 通过对象名访问 对象名 成员名 成员的访问方式 cont public voiddisplay cout X m iX endl cout Y m iY endl voidset intaX intaY m iX aX m iY aY private intm iX intm iY intmain TPointpt pt set 100 100 pt display display pt m iX 4 return0 5 3 法二 通过对象指针访问 注意 对象指针与普通变量指针的定义方法相同 成员的访问方式 cont 对象指针 成员名 对象指针 成员名 classTPoint public voiddisplay coutdisplay return0 5 4 法二 通过对象引用访问 注意 对象引用与普通变量引用的定义方法相同 成员的访问方式 cont classTPoint public voiddisplay cout X m iX endl cout Y m iY endl voidset intaX intaY m iX aX m iY aY private intm iX intm iY intmain TPointpt TPoint 5 5 对象引用 成员名 本次议题 类与对象概述类类的声明类的定义对象对象的声明与成员访问实例化对象类和对象的简单应用举例 类和对象的简单应用举例 通过几个例子说明怎样用类设计程序 classTime public intm iHour intm iMinute intm iSec intmain Timecurrent cout current m iHour cout current m iMinute cout current m iSec cout current m iHour current m iMinute current m iSec endl return0 5 6 类和对象的简单应用举例 cont 无法实现数据隐藏 注意 对象中数据成员通常不会设定为public类外在引用成员别忘记在指定对象名不要错写成类名Time m iHour Time m iMinute Time m iSec 对象名 成员名 类和对象的简单应用举例 cont 改用成员函数处理数据 5 9 classTime public voidinput voiddisplay private intm iHour

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论