第3单元 类类型.pptVIP

  1. 1、本文档共121页,可阅读全部内容。
  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文档。上传文档
查看更多
第3单元 类类型

第3章 类类型 内容提要: 类与对象 构造函数和析构函数 对象数组 指向对象的指针变量 类类型做参数类型 关键字this 静态成员 友元关系 类类型常量 一个类的对象作为另一个类的成员 其它问题 §3.1 类与对象 3.1.1 类的定义 1. C++对结构的扩充 结构是C语言的一种自定义的数据类型,在结构体中可以含有 各种不同类型的数据。例如: 类与对象 类与对象 类与对象 类与对象 2. 类的定义 C++提供了一种比结构类型更安全有效的数据类型 — 类。类与结构的扩充形式十分相似,其一般形式如下: 类与对象 类与对象 说明: (1)类的声明中的private和public两个关键字可以按任意顺序出现任意次。但是如果把所有的私有成员和公有成员归类放在一起,程序将更加清晰。 (2)除了private和public之外,类中的成员还可以用另一个关键字protected来说明。被protected说明的成员称为保护成员,它不能被外部函数使用,但可以通过其它方法使用它。 (3)不能在类的声明中给数据成员赋初值。例如: 类与对象 类与对象 3.1.2 成员函数的定义 成员函数的定义通常采用两种形式: 第一种方式是在类声明中只给出成员函数的原型,而成员函数体在类的外部定义。这种成员函数定义的一般形式是: 类与对象 由此可以看出,虽然函数setpoint()、getx()、gety()在类外部定 义,但它们属于类point的成员函数,它们可以直接使用类point 中的数据成员x和y。 类与对象 说明: (1)在所定义的成员函数名之前应缀上类名,在类名和函数名之间应加上分隔符“::”; (2)在定义成员函数时,对函数所带的参数,不但要说明它的类型,还要指出其参数名。 (3)在定义成员函数时,其返回类型一定要与函数原型中声明的返回类型一致。 第二种方式是:将成员函数定义在类的内部,即定义为内置函数。在C++中,可以用下面两种格式定义类的内置函数: 类与对象 ① 隐式定义:直接将函数定义在类的内部。 类与对象 ② 显式定义:定义内置函数时,为了书写清晰,仍将它放在类定义体外。但为了使它仍起内置函数的作用,在函数定义前冠以关键字“inline”,以此显式的说明这是一个内置函数。 类与对象 §3.2 构造函数与析构函数 构造函数:在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。 析构函数:撤消类对象时,析构函数回收对象的存储空间,并做一些善后工作。 构造函数与析构函数 3.2.1 简单的构造函数和析构函数 1. 构造函数 构造函数是一类特殊的成员函数。 主要作用:为对象分配空间,进行初始化。 构造函数的名字必须与类名相同。 构造函数可以有任意类型的参数,但不能具有返回类型。 定义对象时,编译系统会自动地调用构造函数。 构造函数与析构函数 构造函数与析构函数 说明: (1)构造函数的名字必须与类名相同,否则编译程序将把它当作一般的成员函数来处理。 (2)构造函数没有返回值,在声明和定义构造函数时,是不能说明它的类型的,甚至说明为void类型也不行。 (3)在实际应用中,通常需要给每个类定义构造函数。如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。 构造函数与析构函数 缺省构造函数的作用:只为对象分配存储空间,而不给对象中的数据成员赋初值。 给对象赋初值还可以通过显式的调用成员函数来完成。 构造函数与析构函数 (4)对于带参数的构造函数,在定义对象时必须给构造函数传递参数,否则构造函数将不被执行;构造函数也可以是不带参数的。 构造函数与析构函数 (5)构造函数也可采用构造表达式表对数据成员进行初始化。 构造函数与析构函数 如果需要将数据成员存放在堆中或数组中,则应在构造函数中使用赋值语句,即使构造函数有表达式表也应如此。 构造函数与析构函数 构造函数与析构函数 (7)对没有定义构造函数的类,其公有数据成员可以用初始值表进行初始化。 构造函数与析构函数 2. 重载构造函数 一个类可以提供多个构 造函数,它们的参数必须互 不相同,可以提供不同的初 始化要求。 构造函数与析构函数 构造函数与析构函数 3. 具有缺省参数的构造函数 实际应用中,有些构造函 数的参数值通常是不变的,只 有在特殊情况下才需要改变它 的参数值,这时可以将其定义 成带缺省参数的构造函数。 构造函数与析构函数 class X { public: X(); X(int i=0); … }; void main() { X one(10); X two; } 构造函数与析构函数 4. 析构函数 析

文档评论(0)

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

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

1亿VIP精品文档

相关文档