- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 关于类和对象的进一步讨论 C++程序设计 本章内容 9.1 构造函数 在建立一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。如果一个数据成员未被赋值,则它的值是不可预知的,对象是一个实体,它反映了客观事物的属性(例如时钟的时、分、秒的值),是应该有确定的值的。 9.1.1 对象的初始化 9.1.1 对象的初始化 类的公用成员可以在定义对象时对数据成员进行初始化。在一个花括号内顺序列出各公用数据成员的值,两个值之间用逗号分隔。 如果数据成员是私有的,或者类中有private或protected的成员,就不能用这种方法初始化。 9.1.2 构造函数的作用 9.1.2 构造函数的作用 注:上面是在类内定义构造函数的,也可以只在类内对构造函数进行声明而在类外定义构造函数。 在类内声明构造函数: Time( ); 在类外定义构造函数: Time∷Time( ) //在类外定义构造成员函数,要加上类名Time和域限定符“∷” {hour=0; minute=0; sec=0; } 此处两个Time的含义不同。 9.1.3 带参数的构造函数 在例9.1中构造函数不带参数,在函数体中对数据成员赋初值。这种方式使该类的每一个对象都得到同一组初值(例如例9.1中各数据成员的初值均为0)。但是有时用户希望对不同的对象赋予不同的初值。 可以采用带参数的构造函数,在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数,以实现不同的初始化。 9.1.3 带参数的构造函数 构造函数首部的一般格式为: 构造函数名(类型 1 形参1, 类型2 形参2, …) 因为用户是不能调用构造函数的,因此无法采用常规的调用函数的方法给出实参。实参是在定义对象时给出的。 类名 对象名(实参1, 实参2, …); 9.1.3 带参数的构造函数 例9.2: 有两个长方柱,其长、宽、高分别为: (1)12,20,25;(2)10,14,20。求它们的体积。编一个基于对象的程序,在类中用带参数的构造函数对对象初始化。 9.1.4 用参数初始化表对数据成员初始化 在9.1.3节中介绍的是在构造函数的函数体内通过赋值语句对数据成员实现初始化。C++还提供另一种初始化数据成员的方法——参数初始化表来实现对数据成员的初始化。这种方法不在函数体内对数据成员初始化,而是在函数首部实现。例如例9.2中定义构造函数可以改用以下形式: Box∷Box(int h,int w,int len):height(h),width(w),length(len){ } 这种写法方便、简练,尤其当需要初始化的数据成员较多时更显其优越性。甚至可以直接在类体中(而不是在类外)定义构造函数。 9.1.5 构造函数的重载 在一个类中可以定义多个构造函数,以便对类对象提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。这称为构造函数的重载。 例9.3 :在例9.2的基础上,定义两个构造函数,其中一个无参数,一个有参数。 9.1.5 构造函数的重载 说明: (1) 调用构造函数时不必给出实参的构造函数,称为默认构造函数,显然无参的构造函数属于默认构造函数。一个类只能有一个默认构造函数。 (2) 如果在建立对象时选用的是无参构造函数,应注意正确书写定义对象的语句。 (3) 尽管在一个类中可以包含多个构造函数,但是对于每一个对象来说,建立对象时只执行其中一个构造函数,并非每个构造函数都被执行。 9.1.6 使用默认参数的构造函数 构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。 在第4章第4.8节中介绍过在函数中可以使用有默认值的参数。在构造函数中也可以采用这样的方法来实现初始化。 例9.3的问题也可以使用包含默认参数的构造函数来处理。 例9.4 将例9.3程序中的构造函数改用含默认值的参数,长、宽、高的默认值均为10。 在例9.3程序的基础上改写如下: 9.1.6 使用默认参数的构造函数 说明: (1) 应该在声明构造函数时指定默认值,而不能只在定义构造函数时指定默认值。 (2) 程序第5行在声明构造函数时,形参名可以省略。 (3) 如果构造函数的全部参数都指定了默认值,则在定义对象时可以给一个或几个实参,也可以不给出实参。 (4) 在一个类中定义了全部是默认参
您可能关注的文档
最近下载
- 正常新生儿护理演示ppt课件.ppt
- 硬笔楷书教学课件.pptx VIP
- 天津市南开翔宇学校初一新生分班(摸底)数学模拟考试(含答案).pdf VIP
- 第1课 寻找信息科技(教学设计)-2024-2025学年人教版(2024)信息三年级全一册.docx VIP
- 南京电子地图超大版-超清晰-3600-x-5100分辨率.pdf VIP
- 冷轧带钢再结晶退火的感应加热.pdf VIP
- (高清版)B-T 18380.12-2022 电缆和光缆在火焰条件下的燃烧试验 第12部分:单根绝缘电线电缆火焰垂直蔓延试验 1kW预混合型火焰试验方法.pdf VIP
- 大学生竞选班长最新PPT课件.ppt VIP
- 云教版劳动与技术四年级上册2切菜.pptx VIP
- 育婴员(职工组)基础知识模块(模块一).docx VIP
文档评论(0)