ObjectOrientedProgramminginC第三章再论类和对象.pptVIP

ObjectOrientedProgramminginC第三章再论类和对象.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ObjectOrientedProgramminginC第三章再论类和对象

Object-Oriented Programming in C++ 第三章 再论类和对象 中国科大学继续教育学院 李艺 leeyi@ 第一章 C++的初步知识 第二章 类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C++工具 3.1 构造函数 3.2 析构函数 3.3 调用构造函数和析构函数的顺序 3.4 对象数组 3.5 对象指针 3.6 共用数据的保护 3.7 对象的动态建立和释放 3.8 对象的赋值和复制 3.9 静态成员 3.10 友元 3.1 构造函数 对象的初始化 和普通变量一样,我们定义一个变量,往往同时进行初始化: int a = 3; 而声明类时,数据成员不能进行初始化: class time { hour = 0; minute = 0; second = 0; } 因为类不是实体,不占分配存储空间,显然无法容纳数据。 3.1 构造函数 如果一个类的所有数据才成员都是公用的,我们可以想结构体变量那样,在定义对象时(而不是声明类时)进行初始化: class time { public: hour = 0; minute = 0; second = 0; }; time t1 = {13,30,20}; 但在类的声明中,数据成员往往都是私有的,不能这样初始化。就需要一个公有成员函数来完成,而且应该是自动调用地完成。这就是构造函数。 3.1 构造函数 构造函数的作用 C++提供了构造函数( constructor )来处理对象的初始化。构造函数是一个由用户定义的特殊的成员函数。与其他成员函数不同之处在于: 用户不能调用它,而是在定义对象时,有系统自动调用构造函数。 构造函数的名字必须与类名一致,不能是其他名字。 构造函数不能有任何返回类型。 用户如果没有定义构造函数,系统会自动生成一个构造函数,只不过函数体中没有任何语句。 3.1 构造函数 例3.1 将前例的时间类定义构造函数。在构造函数中加入输出语句,看看运行效果。 3.1 构造函数 带参数的构造函数 前一个示例中,没产生一个time了的对象,其初值都初始化为0。如果用户初始化时,不想将对象初值置为0而是其它值,就需要用带参数的构造函数来实现。 声明一个构造函数的一般格式为: 构造函数名 ( 类型1 形参1,类型2 形参2,…); 定义一个对象的一般格式为: 类名 对象名 ( 实参1,实参2,… ); 下面举例说明用法。 3.1 构造函数 例3.2 :有两个长方体,长宽高分别为(1,2,3)和(4,5,6)。试编写一基于对象的程序,分别求他们的体积,并且要求用带参数的构造函数初始化他们。 3.1 构造函数 用参数初始化表对数据成员初始化 C++提供另一种初始化数据成员的方法:参数初始化表来实现对数据成员的初始化。这种方法不在函数体内初始化数据成员,而是在函数首部实现。例3.2 我们改写成如下形式: 3.1 构造函数 示例中的初始化表表示,用形参h的值初始化数据成员height,用w值初始化width,用len值初始化 length。这种初始化方法比较简练,可以直接在类体中定义构造函数。 3.1 构造函数 构造函数的重载 一个类中,可以有多个构造函数,只要他们的参数表不同。以方便同类对象不同初始化的需要。见下例3.3 : 3.1 构造函数 说明 参数表为空的构造函数叫默认构造函数,一个类中只能有一个默认函数。 定义对象时,如果想用默认构造函数初始化它,正确的定义形式为: circle c2; 而不是: circle c2 ( ); 一个类尽管定义了多个构造函数,一个对象只能用其中一个来初始化。 3.1 构造函数 使用默认参数的构造函数 构造函数的参数既可以通过实参传送,也可以指定为某些默认值。当用户不指定实参值时,编译系统便将默认值为形参值。 在实际生活中,常有一些这样的默认值。如计数器的默认值为0;战士的性别默认值为“男”;男性职工退休年龄默认值为60岁等,如果实际情况不是默认值,则由用户另外指定。采用默认值,可以减少用户的输入量。 下面举例说明。 3.1 构造函数 例3.4 试将例3.3 的构造函数改用默认值的参数,半径值默认为1.0。 3.1 构造函数 构造函数中使用默认参数的好处 提供建立对象时的多种选择,相当于好几个重载的构造函数。 即使在调用构造时不提供参数也不会出错,因为有默认参数值参与对象初始化。 当每一个对象都是相同的初始值时,非常方便,用户不需要输入数据。 3.1 构造函数 默认参数值

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档