OOP_3类分析.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OOP_3类分析

用new运算符动态创建对象时系统会自动调用构造函数 函数malloc无法调用构造函数进行初始化。 * 析构函数是用于对包含有指向动态分配的堆内存的指针、文件句柄等数据成员的类对象在撤消时释放其所占用的系统资源的一种自动隐式调用的成员函数。其函数名是在类名前加‘~’字符。析构函数没有返回类型。也不可以重载 当类对象按作用域规则撤消时会自动隐式调用析构函数,用delete运算符来显式撤消一个类对象时,也会自动调用该类的析构函数。 如果在类定义时未定义构造函数和析构函数,编译器将自动生成一个不带参数的什么都不做的缺省的构造函数和析构函数 * 总结: 1)析构函数的特点 2)析构函数被自动调用的两种情况 3)构造函数与析构函数调用的顺序关系。 * * 得到一个以字符串表示的时间标记:星期几,月份、几号,小时、分钟、秒,年 * * time_t是一种算术类型,可以是如long这样的标准算术类型,也可以是适合与某特定系统的非标准算术类型 复合类是指其他类的对象(不能是复合类本身的对象)作为其数据成员或成员函数的参数的类。复合类有利于程序开发过程中程序员之间分工协作,并有助于改善程序代码的模块化程度,有利于信息隐藏 复合类类对象的子对象初始化: 在复合类的构造函数内直接对子对象数据成员赋值初始化 若子对象类未定义构造函数、定义有无参数或缺省参数的构造函数,则可在复合类的构造函数内调用子对象的公有成员函数来初始化子对象数据成员 在复合类的构造函数函数头用包含子对象名的成员初始化列表来调用复合类子对象的构造函数实现子对象的初始化 复合类对象构造时,先按其构造函数初始化列表的顺序调用子对象的构造函数初始化子对象,然后对其非对象数据成员进行初始化。复合对象在撤消时,顺序正好与其创建的次序相反。 复合类与其子类的关系是包含与被包含的关系,两个类之间的has-a关系是显示地表示出来。 派生类与基类的关系是继承与被继承的关系,两个类之间的is-a-kind-of关系是隐式地表示出来。 如果两个具有隶属关系的类之间相同的成员函数不多,则适合用复合类。 如果两个具有从属关系的类之间有很多相同的行为,则适合用派生类。 * 属于对象的成员称为对象成员或实例成员。 * 属于对象的成员称为对象成员或实例成员。 将对象共有属性用普通数据成员表示,每个对象都保存共有数据的一个副本,容易出现不一致问题 在构造函数可以自动更改共有数据,但无法设置其初始值 将对象共有属性用全局变量描述,也会带来增加耦合度,降低信息隐藏和数据封装性,命名冲突等问题 * 静态数据成员主要用于: 保存对象的个数。在构造函数中对该静态成员加1,在析构函数里对该静态成员减1。,比如某个类的所有类对象共享一块动态分配的内存, 表示对象共有的数据,如最大值、最小值等 作为一个标记,标记一些动作是否发生,比如:文件的打开状态,打印机的使用状态,等等。 存储链表的第一个或者最后一个成员的内存地址。 链表的表头等 * * 静态成员函数主要用于表示该函数逻辑上是属于某个类的,它只访问逻辑上属于一个类的静态数据成员、全局变量和静态成员函数的参数,而不访问描述该类各对象状态的非静态数据成员 由于静态成员函数不访问非静态数据成员,因而静态成员函数不能被声明为const。静态成员函数没有this指针 调用静态成员函数时既可用目标对象名,也可用类名采用如下格式调用: 类名::静态成员函数名(参数表) ; 用类名调用描述类对象公共行为的静态成员函数,能提高程序的可理解性 * 将数据成员svar设为public违反了信息隐藏的原则。 static成员与类本身相关联,而不是与对象相关联 使用静态成员数据需要两条语句:一条在类中用static关键字声明,一条在类外用如下格式定义和初始化: 数据类型 类名::静态数据成员名 = 值; 而且静态数据成员的初始化应该在主函数调用之前,并且不能在类的声明中出现。 调用静态成员函数时既可用目标对象名,也可用类名采用如下格式调用: 类名::静态成员函数名(参数表) ; 用类名调用描述类对象公共行为的静态成员函数,表示该成员是属于某个类的,而不是属于某个类的特定的对象的,从而提高可理解性 * static变量s 定义在程序块内,只能在m内部访问。 对m的每一次调用访问的都是同一个s * * 用对象名来调用类成员函数时,成员函数的参数列表中不应出现要操作的目标对象 如: s1.set(“张三”, 2000121,s1); //s1不应出现 这是因为C++在一个类的各个成员函数中提供一个隐藏的名为this的特殊形式指针参数。该指针指向调用该成员函

文档评论(0)

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

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

1亿VIP精品文档

相关文档