三、类和对象(二)_面向对象程序设计.ppt_第1页
三、类和对象(二)_面向对象程序设计.ppt_第2页
三、类和对象(二)_面向对象程序设计.ppt_第3页
三、类和对象(二)_面向对象程序设计.ppt_第4页
三、类和对象(二)_面向对象程序设计.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

课程要求 课程内容 面向对象程序设计 课程内容 课程要求 参考书目 返回首页 面向对象程序设计 类和对象 友元 静态成员 对象成员 常成员 this指针 综合范例 面向对象程序设计 This指针 指向当前对象实例的特殊指针成员函数通过this指针 找到自己所属的对象实例隐含定义形式 2 16 main result constthis 面向对象程序设计 this指针 2 16 classeg inti public voidload intval i val intget returni voidmain egobj obj load 100 cout obj get this的隐式调用 voidload eg this intval this i val intget eg this returnthis i load get 面向对象程序设计 this指针 2 16 classstudent public voidcopy student this的显式调用 a copy a b copy a 面向对象程序设计 this指针 2 16 classCTest public CTest x 20 Avoiduse this Bprivate intx voidCTest use this CTesty pointer Cthis G 改正错误 voidmain CTesty Hthis x 235 I this this x 10 this x 235 面向对象程序设计 this指针 小结 2 16 back 面向对象程序设计 静态成员 静态数据成员 例3 28定义 2 16 static类型名变量名 面向对象程序设计 静态成员 静态数据成员初始化格式 2 16 类型类名 静态数据成员 值 能否使用构造函数为静态数据成员赋值 面向对象程序设计 静态成员 2 16 classCCounter public staticintcount 共有数据成员CCounter count intCCounter count 0 voidmain cout 当前类对象的数目为 cout CCounter count endl CCounterobj1 obj2 cout 当前类对象的数目为 cout CCounter count endl 统计对象的个数 staticintcount intCCounter count 0 CCounter count CCounter count 若改为私有数据成员会出现什么情况 面向对象程序设计 静态成员 2 16 classCStudent intNo char name staticinttotalstu public CStudent voidoutputinfo intCStudent totalstu 0 CStudent CStudent totalstu name newchar 10 No totalstu cin name voidCStudent outputinfo cout No t name endl 自动编号 staticinttotalstu intCStudent totalstu 0 totalstu No totalstu 面向对象程序设计 静态成员 静态成员函数定义形式 成员函数前使用static说明 2 16 1 是类的成员函数 调用时采用类名 函数名2 可以调用静态成员 但调用非静态成员时必须借助对象3 编译器对静态成员函数的处理是内部的 在多文件联编中 不会与其他同名函数冲突4 可以在建立任何对象之前处理静态数据成员 面向对象程序设计 静态成员 2 16 classM public M inta A a B a staticvoidf1 Mm private intA staticintB intM B 0 voidM f1 Mm cout A m A endl cout B B endl 静态成员函数 staticvoidf1 Mm voidmain Ma1 1 a2 2 M f1 a1 M f1 a2 voidmain Ma1 1 M f1 a1 Ma2 2 M f1 a2 修改后结果 面向对象程序设计 静态成员 2 16 练习 设计一个书类 能够保存书名 定价 并可以统计所有书的本数和总价 并给出测试程序 面向对象程序设计 静态成员 小结 2 16 back 面向对象程序设计 友元 友元函数定义形式 2 16 friend友元函数名 参数表 1 不是类的成员函数 但可以访问类所有的成员2 可以类的任何部分声明3 实现可以在类外 不需要加上 也可以在类内 面向对象程序设计 友元 2 16 classCBox inti j publicCBox inta 10 intb 10 i a j b friendintget area CBox 计算矩形面积 friendintget area CBox intget area CBox s 面向对象程序设计 友元 2 16 classCA inta public friendvoidA classCB intb public friendvoidA voidA CAa1 CBb1 a1 a 1 b1 b 2 友元函数访问多个类对象 面向对象程序设计 友元 2 16 计算火车旅途时间的友元函数 面向对象程序设计 友元 友元成员函数 把另一个类成员函数定义为自己的友元定义形式 2 16 friend类名1 成员函数名 参数表 classCA public voidA classCB public friendvoidCA A voidCA A 直接访问CA类和CB类的所有成员 面向对象程序设计 友元 2 16 classA2 classA1 inta public A1 inti a i intGeta returna voidChange A2 classA2 voidChange A2 friendvoidA1 Change A2 面向对象程序设计 友元 友元类 2 16 classCA public voidA voidB classCB public friendclassCA voidCA A 直接访问CA类和CB类的所有成员 voidCA B 直接访问CA类和CB类的所有成员 计算火车旅途时间的友元类 面向对象程序设计 友元 小结 2 16 back 面向对象程序设计 对象成员 讨论的问题 类中包含其他类的对象时 本类和其他类中构造和析构函数调用类中包含其他类的对象时 这些对象如何初始化 2 16 1 类中嵌套他类对象 构造函数调用次序为先说明先调用 析构函数调用次序为先说明后调用2 在构造函数中使用初始化成员列表为他类对象构造函数传递参数 面向对象程序设计 对象成员 2 16 classA intx y public A inta intb x a y b cout 调用类A的构造函数 endl A cout 调用类A的析构函数 n classB intLength Width public B inta intb Length a Width b cout 调用了类B的构造函数 endl B cout 调用类B的析构函数 n classC intr Aa1 DBb1 Epublic C inta intb intc a1 b c b1 500 600 r a cout 调用了类C的构造函数 endl C cout 调用类C的析构函数 n Cc1 100 200 300 back 面向对象程序设计 常成员 常引用const对象定义形式 2 16 类名const对象名const类名对象名 1 不能改变const对象的成员数据2 const对象只能访问对象中的const成员函数3 必须对const对象进行初始化 面向对象程序设计 常成员 2 16 const对象 classA inta public intb A inti intj a i b j voidset inti intj voidprint const constAa1 1 3 a1 print a1 b 3 a1 set 2 3 面向对象程序设计 常成员 const成员数据定义形式 2 16 const变量名 1 不能在类定义时直接赋值2 不能在任何函数中对其赋值3 构造函数只能够通过初始化列表对其初始化 面向对象程序设计 常成员 2 16 const数据成员 classCIncrement intcount constintincrement public CIncrement intc 0 inti 1 CIncrement intc 0 inti 1 increment i count c increment i 面向对象程序设计 常成员 const成员函数定义形式 2 16 参数表 const 1 不能改变类中成员数据的值 也不能调用非const成员函数2 const对象只能调用const成员函数3 普通对象优先考虑非co

温馨提示

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

评论

0/150

提交评论