C++面向对象程序设计3(1).ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第三章关于类和对象的进一步讨论3.1构造函数构造函数是类的成员函数,系统约定构造函数名必须与类名相同。构造函数提供了初始化对象的一种简单的方法。可以带参数、可以重载,同时没有返回值。参数初始化表的形式A::A(floata,floatb):x(a),y(b){}#includeiostream.hclassdate{private: intyear,month,day;public: date(inty,intm,intd); voidprint();};date::date(inty,intm,intd){ year=y; month=m; day=d; coutconstructorcalledendl;}voiddate::print(){ coutyear.month.dayendl;}voidmain(){ datetoday(2001,8,11),tomorrow(2001,8,12); couttodayis; today.print(); couttomorrowis; tomorrow.print();}构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数是在创建对象时,使用给定的值来将对象初始化。析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作。classA{ floatx,y;public:A(floata,floatb){x=a;y=b;}//构造函数,初始化对象floatSum(void){returnx+y;}voidSet(floata,floatb){x=a; y=b;}Print(void){coutx=x\ty=yendl;}};voidmain(void){ Aa1(2.0,3.0);//定义时调用构造函数初始化 Aa2(1.0,2.0); a2.Set(10.0,20.0);//利用成员函数重新为对象赋值a1.Print(); a2.Print();}对构造函数,说明以下几点:1.构造函数的函数名必须与类名相同。构造函数的主要作用是完成初始化对象的数据成员以及其它的初始化工作。2.在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。3.由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成员均能进行初始化。4.构造函数在建立对象时自动调用,不能由用户自己调用。5.构造函数可以指定参数的缺省值。6.一个类可以定义若干个构造函数。当定义多个构造函数时,必须满足函数重载的原则。7.构造函数一般为公有的成员函数。程序运行结果为constructorcalledconstructorcalledtodayis2001.8.11tomorrowis2001.8.12局部对象,静态对象,全局对象初始化说明对于局部对象,每次定义对象时,都要调用构造函数。对于静态对象,是在首次定义对象时,调用构造函数的,且由于对象一直存在,只调用一次构造函数。对于全局对象,是在main函数执行之前调用构造函数的。例1:f1(inta){intb,c;…在本函数中a、b、c有效}f2(inta,intb){intc,d;在本函数中a、b、c、d有效…但与f1函数中的a、b、c不同}main(){intm,n;在本函数中m、n有效…}inta,b;/*外部变量*/voidf1()/*函数f1*/{……}floatx,y;

文档评论(0)

优美的文学 + 关注
实名认证
内容提供者

优美的文学优美的文学优美的文学优美的文学优美的文学

1亿VIP精品文档

相关文档