第三章类和对象.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文档。上传文档
查看更多

拷贝构造函数是一种特殊的构造函数。它用于依据已存在的对象建立一个新对象。典型的情况是,将参数代表的对象逐域拷贝到新创建的对象中。1.自定义拷贝构造函数自定义拷贝构造函数的一般形式如下:classname(constclass_nameb)//拷贝构造函数的函数体3.2.5拷贝构造函数第61页,共86页,星期日,2025年,2月5日说明(1)在使用对象赋值语句进行对象赋值时,两个对象的类型必须相同,如对象的类型不同,编译时将出错。(2)两个对象之间的赋值,仅仅使这些对象中数据相同,而两个对象仍是分离的。例如本例对象赋值后、再调用o1.set()设置ol的值,不会影响o2的值。(3)将一个对象的值赋给另一个对象时,多数情况下都是成功的.但当类中存在指针时,可能会产生错误。这个问题我们将在第5章分析。第29页,共86页,星期日,2025年,2月5日3.1.4类的作用域所谓类的作用域就是指在类的声明中的一对花括号所形成的作用域。一个类的所有成员都在该类的作用域内。一个类的任意成员可以引用该类的其它成员。C十十把类的所有成员都作为一个整体的相关部分。一个类的成员函数可以不受限制地引用该类的数据成员,而在该类作用域之外.对该类的数据成员和成员函数的引用则要受到一定的限制,有时甚至是不允许的。这体现了类的封装功能。下面的例子可帮助我们理解类的作用域。第30页,共86页,星期日,2025年,2月5日第31页,共86页,星期日,2025年,2月5日3.2构造函数与析构函数3.2.1构造函数构造函数是一种特殊的成员函数.它主要用于为对象分配空间,进行初始化。构造函数具有一些特殊的性质:(1)构造函数的名字必须与类名相同(2)构造函数可以有任意类型的参数,但不能具有返回类型(3)定义对象时,编译系统会自动地调用构造函数。第32页,共86页,星期日,2025年,2月5日第33页,共86页,星期日,2025年,2月5日 构造函数不能像其它成员函数那样被显式地调用,它是在定义对象的同时调用的,其一般格式为:类名对象名(实参表),这里的“类名”与构造函数名相同,“实参表”是为构造函数提供的实际参数。第34页,共86页,星期日,2025年,2月5日第35页,共86页,星期日,2025年,2月5日第36页,共86页,星期日,2025年,2月5日第37页,共86页,星期日,2025年,2月5日构造函数的几点说明(1)构造函数的名字必须与类名相同,否则编译程序将把它当作一般的成员函数来处理。(2)构造函数没有返回值,在声明和定义构造函数时,是不能说明它的类型的,甚至说明为void类型也不行。(3)在实际应用中,通常需要给每个类定义构造函数。如果没有给类定义构造函数,则编译系统自动地生成一个缺省的构造函数。(4)构造函数可以是不带参数第38页,共86页,星期日,2025年,2月5日此时,类ab的构造函数就没有带参数,在main()函数中可以采用如下方法定义对象:abs;在定义对象s的同时,构造函数s.ab::ab()被系统自动调用执行幕上显示字符串“initialized”,并给私有数据成员a赋初值10。第39页,共86页,星期日,2025年,2月5日(5)构造函数也可采用构造初始化表对数据成员进行初始化,这是某些程序员喜欢使用的方法。例如:第40页,共86页,星期日,2025年,2月5日这个含有三个数据成员的类,利用构造初始表可以写成:第41页,共86页,星期日,2025年,2月5日 以上两种构造函数的定义都是有效的。但是如果需要将数据成员存放在堆中或数组中,则应在构造函数中使用赋值语句,即使构造函数有初始化表也应如此,例如:第42页,共86页,星期日,2025年,2月5日第43页,共86页,星期日,2025年,2月5日(6)对没有定义构造函数的类,其公有数据成员可以用初始值表进行初始化。请看以下例子。在本例中,main()中创建了一个类myclass的对象a,并将初始值表中的“chen”和25分别赋给aname和a.no。程序运行结果为:chen25这种方法对结构和数组的初始化较适合。第44页,共86页,星期日,2025年,2月5日3.2.2缺省参数的构造函数对于带参数的构造函数,在定义对象时必须给构造函数传递参数,否则构造函数将不被执行。但在实际使用中,有些构造函数

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档