C++_第05讲-1 构造函数与析构函数-1.pptVIP

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

构造函数与析构函数的作用 它们是特殊的成员函数 构造函数用于创建对象,初始化对象的成员: 为对象分配空间;对数据成员赋初值;请求其他资源 析构函数用于撤销对象 构造函数 构造函数是一个类的特殊成员函数,它的函数名与类名相同,它可以有任意类型的参数,但 不能具有返回类型。当创建一个对象时,系统自动调用构造函数(它不能显示调用)。构造函数可缺省,也可以由用户定义。它的作用为: (1)分配对象的数据成员的存储空间; (2)执行构造函数,一般就是作初始化工作。 构造函数的声明和定义 定义构造函数要注意的问题 1 构造函数的名字必须与类名相同 2 构造函数没有返回值,在声明和定义构造函数时是不能说明它的类型的 3 构造函数的功能是对对象进行初始化,因此在构造函数中只能对数据成员做初始化,这些数据成员一般均为私有成员,在构造函数中一般不做赋初值以外的事情 重载构造函数 与一般成员函数一样,C++允许重载构造函数。若类X具有一个或多个构造函数,创建类X的 对象时,C++ 就会根据参数表的不同而调用其中的一个。 构造函数可具有缺省参数 像所有函数一样,构造函数可具有缺省参数。 允许构造函数带缺省参数常用来把对象数组进行初始化。 在使用具有缺省参数的构造函数时,要谨防二义性。 拷贝构造函数 构造函数的参数可以是任何类型参数,甚至可以将自己的类的引用作为参数,称它为拷贝构 造函数。形如: X∷X(const X obj); 拷贝构造函数有两个含义,首先,它是一个构造函数,当创建一个新对象时,系统自动调用 它;其次,它将参数代表的对象逐域拷贝到新创建的对象中。C++可以为类产生一个缺省的 拷贝构造函数,用户也可以根据自己的需要定义拷贝构造函数。 类对象的拷贝还可能发生在函数参数传递对象和函数返回对象的情况下。  对象的初始化 初始化有许多表示法,C语言有三种表示方法: (1)初始值表的方法这种方法对结构和数组的初始化很适合。 (2)赋值表达式的方法适于简单变量或指针类型的初始化。 (3)表达式表的方法 析构函数 与构造函数对应的是析构函数。析构函数没有返回类型,没有参数,函数名是类名前加“~”,它的作用为: (1)执行析构函数体(一般没有具体的工作); (2)释放对象的存储空间。 可以使用完全限定名方式显式地调用析构函数;若没有,则在一个对象的作用域结束时,系 统自动调用析构函数。 析构函数 析构函数的声明和定义: ~类名(); 定义析构函数要注意的问题 析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载。只是在类对象生命期结束的时候,由系统自动调用。 构造函数与析构函数的特点 1 它们都没有返回值说明,也就是说定义构造函数和析构函数时不需指出类型 2 它们不能被继承 3 和大多数c++函数一样,构造函数可以有缺省参数 4 析构函数可以是虚的(virtual),但构造函数不行 5 不可取它们的地址 6 不能用常规调用方法调用构造函数;当使用完全的限定名(带对象名,类名和函数名)时可以调用析构函数 7 当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动地调用析构函数。 构造函数的种类 无参数的构造函数 带参数的构造函数 缺省参数的构造函数 默认构造函数 重载构造函数 拷贝构造函数(引用) 带参数的构造函数 建立对象是,常常需要通过传递一定的数据,来对类中的各种数据成员初始化,使得初始化不再一成不变。 缺省参数的构造函数 有些构造函数的使用中,只有特别的情况需要传递参数,一般都使用缺省值 缺省参数的构造函数定义格式 在构造函数声明时,给出各个参数的缺省值 在构造函数定义时,不用也不能给参数服缺省值 缺省参数的构造函数注意事项 如果函数所带的参数中,有一部分可以缺省,而有一部分不可缺省,所有取缺省值的参数必须出现在不取缺省值的参数的右边 缺省参数并不只用于构造函数,一般的成员函数,甚至于一般的全局函数都可以使用缺省参数 默认构造函数 1. c++规定,每个类必须有一个构造函数,没有构造函数,就不能创建任何对象 2. 若未提供一个类的构造函数(一个都未提供),则c++提供一个默认的构造函数,该默认构造函数是个无参构造函数,它仅负责创建对象,而不做任何初始化工作 3. 只要一个类定义了一个构造函数(不一定是无参构造函数),c++就不再提供默认的默认构造函数。也就是说,如果为类定义了一个带参数的构造函数,还想要无参构造函数,则必须自己定义 4. 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的 重载构造函数 构造函数可以被重载,C++根据声明中的参数选择合适

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档