c构造函数与析构函数.pptxVIP

  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构造函数与析构函数会计学第1页/共53页构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数是在创建对象时,使用给定的值来将对象初始化。析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作。第2页/共53页构造函数可以带参数、可以重载,同时没有返回值。构造函数是类的成员函数,系统约定构造函数名必须与类名相同。构造函数提供了初始化对象的一种简单的方法。第3页/共53页class A{ float x,y;public:A(float a,float b){ x=a; y=b;}//构造函数,初始化对象float Sum(void) { return x+y; }void Set(float a,float b) { x=a; y=b;}Print(void) { coutx=x\ty=yendl;}};void main(void){ A a1(2.0, 3.0);//定义时调用构造函数初始化 A a2(1.0,2.0); a2.Set(10.0, 20.0); //利用成员函数重新为对象赋值 a1.Print(); a2.Print();}第4页/共53页对构造函数,说明以下几点:1.构造函数的函数名必须与类名相同。构造函数的主要作用是完成初始化对象的数据成员以及其它的初始化工作。2. 在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。3. 一个类可以定义若干个构造函数。当定义多个构造函数时,必须满足函数重载的原则。第5页/共53页4.构造函数可以指定参数的缺省值。5.若定义的类要说明该类的对象时,构造函数必须是公有的成员函数。如果定义的类仅用于派生其它类时,则可将构造函数定义为保护的成员函数。由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成员均能进行初始化。class A{ float x,y;public: A(float a, float b=10) { x=a; y=b; } A() { x=0; y=0;} void Print(void) { coutx\tyendl; }};void main(void){ A a1, a2(20.0), a3(3.0, 7.0); a1.Print(); a2.Print(); a3.Print();} 第6页/共53页带缺省参数的构造函数不带参数的构造函数0 020 103 7每一个对象必须要有相应的构造函数第7页/共53页每一个对象必须要有相应的构造函数若没有显式定义构造函数,系统默认缺省的构造函数。class A{ float x,y;public: A() {} void Print(void) { coutx\tyendl; }};对象开辟了空间,但没有初始化隐含的缺省的构造函数只允许这样定义对象A a1, a2;第8页/共53页对局部对象,静态对象,全局对象的初始化对于局部对象,每次定义对象时,都要调用构造函数。对于静态对象,是在首次定义对象时,调用构造函数的,且由于对象一直存在,只调用一次构造函数。对于全局对象,是在main函数执行之前调用构造函数的。第9页/共53页class A{ int x,y; public: A(int a){ x=a; cout“1\n”;} A(int a, int b) { x=a,y=b;cout“2\n”;}};A a1(3);void f(void) { A b(2,3);}void main(void){ A a2(4,5); f(); f();}1222class A{ float x,y;public: A(float a, float b){x=a;y=b;cout初始化自动局部对象\n;} A(){ x=0; y=0; cout初始化静态局部对象\n;} A(float a){ x=a; y=0; cout初始化全局对象\n; } void Print(void){ coutx\tyendl; }};A a0(100.0);//定义全局对象void f(void){ cout 进入f()函数\n;A a2(1,2); static A a3; //初始化局部静态对象 }void main(void){ cout进入main函数\n; A a1(3.0, 7.0);//定义局部自动对象 f(); f(); }第10页/共53页初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化自动局部对象初始化局部静态变量进入f()函数初始化自动局部对象第11页/

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档