类及其对象的封装.pptVIP

  1. 1、本文档共61页,可阅读全部内容。
  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.4 #include iostream.h #include “tdate1.h” void main( ) { TDate1 today(1997,4,20),tomorrow(1998,3,6); //定义时直接初始化,由构造函数获得实参的值 cout”today is “; today.Print( ); cout”tomrrow is “; tomorrow.Print( ); } 第29页,共61页,编辑于2022年,星期二 例3.4的运行结果 Constructor called. Constructor called Today is 1997.4.20 tomorrow is 1998.3.6 Destructor call. Destructor call. 第30页,共61页,编辑于2022年,星期二 3、构造函数和析构函数的执行顺序 构造函数的执行次序是先遇到哪个构造函数,就执行哪个。 析构函数的执行次序恰好和构造函数相反。 例3.5 第31页,共61页,编辑于2022年,星期二 4、缺省参数的构造函数 前面介绍的是带参数的构造函数,在定义对象时必须给带参数的构造函数传递参数,否则构造函数将不被执行。但在有些构造函数的使用中,只有特别的情况需要传递参数,一般都使用缺省值。因为在构造函数中允许指定函数参数的缺省值,这被定义的缺省值在函数调用者不确定参数时可以作为参数来使用。 缺省参数可以是一个或一个以上,若有一个以上的缺省参数,其用法和前面介绍的函数的缺省参数用法一样。 第32页,共61页,编辑于2022年,星期二 例: class set { int elems[100]; int size; int card; public: set(int i=16); //含有缺省参数的构造函数 : }; void main() { set s1(64); set s2(16); set s3(8); set s4; : } S1对象的私有成员size取值64 S2对象的私有成员size取值16 S3对象的私有成员size取值8 S4对象的私有成员size取值16 第33页,共61页,编辑于2022年,星期二 5、多构造函数 前面介绍的构造函数都是在一个类中只有一个的情况,但是,有时在一个类中可以有几个构造函数,每个都去适应不同的场合,这些函数之间以它们所带参数的个数或类型的不同区分。这种情况也称为重载构造函数。 另外,使用缺省参数的构造函数时,要注意避免二义性。 第34页,共61页,编辑于2022年,星期二 例: 有一个类x,它有四个不同的构造函数: class x { //… public: x(); x(int); x(int,char); x(float,char); //… }; main() { x a; //调用无参构造函数 x b(1); //调用一个参数的构造函数 x c(1,’c’); //调用第三个构造函数 x d(3.5,’d’); //调用第四个构造函数 } 第35页,共61页,编辑于2022年,星期二 6、拷贝构造函数 拷贝构造函数是一种特殊的构造函数。首先,它是一个构造函数,当创建一个新对象时,系统自动调用它;其次,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。即用一个已有对象初始化一个正在建立的同类对象。 拷贝构造函数的定义有两种形式:系统产生和用户定义。 第36页,共61页,编辑于2022年,星期二 (1)系统产生 系统具有为类产生一个缺省的拷贝构造函数的功能,只要使用即可。 例 #include “iostream.h” class point { int x,y; public: point(int vx,int vy) { x=vx;y=vy;} void print() { coutx“ “yendl;} //… }; void main() { point p1(10,20); //定义一个point类对象p1 point p2(p1); //定义一个point类对象p2。调用的是系统缺省的拷贝构造函数,将p1对象的各个域的值都拷贝给了p2对象相应的域;因此p2对象的数据成员的值与p1对象的相同。 p1.print(); p2.print(); } 第37页,共61页,编辑于2022年,星期二 (2

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档