欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    章构造函数和析构函数.pptx

    • 资源ID:87259549       资源大小:271.70KB        全文页数:32页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    章构造函数和析构函数.pptx

    方法二:在类外定义构造函数 :(参数)第1页/共32页例10-1:定义构造函数#include“string.h”class person private:char Name8;ansigned Age:7;unsigned Sex:1;public:person(char*name,int age,char sex)strcopy(Name,name);Age=age;Sex=(sex=m?0:1);第2页/共32页 person();/函数重载 void Setname(char*name)strcopy(Name,name);void Setage(int age)Age=age;void Setsex(char sex)Sex=(sex=m?0:1);void Getname(char*name)(strcpy(name,Name);)int Getage()retuen Age;char Getset()return(Sex=0?m,f);第3页/共32页例11-2 使用构造函数完成数据的输入输出#include iostream.hclass time public:time()/构造函数 hour=0;minute=0;sec=0;第4页/共32页 void set_time();/函数原型 void show_time();/函数原型 private:int hour;int minute;int sec;第5页/共32页void time:set_time()cinhour;cinminute;cinsec;void time:show_time()couthour;minute:secendl;第6页/共32页 main()time t1;t1.set_time();t1.show_time();time t2;t2.show_time();return 0;第7页/共32页 程序执行过程:1.定义对象t1,同时自动执行构造函数,对类中的成员赋初值。2.执行t1.set_time()函数,从键盘上给t1对象成员赋值。3.执行t1.show_time()函数,输出t1对象数据成员值。4.定义对象t2,同时自动执行构造函数,对类中的成员赋初值。5.执行t2.show_time()函数,输出t2对象数据成员值。第8页/共32页问题:1.如果不给对象成员赋值(第2步不执行),输出结果是什么?2.如果没有构造函数,不给对象成员赋值,输出结果又是什么?3.构造函数如何定义?(类内和类外)time()/在类内进行函数声明 time:time()/在类外定义hour=0;minute=0;sec=0;第9页/共32页4.构造函数如何使用?5.构造函数的名字是什么?6.什么时间调用构造函数?7.构造函数有没有返回值?8.用户不定义构造函数,C+系统会自动生成一个构造函数,该函数是否有内容?9.带参数的构造函数和不带参数的构造函数使用上有什么不同?10.函数重载和构造函数重载的各自作用和不同地方是什么?11构造函数中的初始值是否一定为0?12为什么要定义重载构造函数?(定义构造函数之后,不允许使用系统默认构造函数,若要使用必须从新显示说明)第10页/共32页10.1.2 构造函数与对象初始化构造函数与对象初始化 格式:对象(实参);或 对象;例10-3:利用构造函数对对象初始化且输出#include iostream.h class demo int x,y;public:demo(int a,int b)/建立构造函数 x=a;y=b;demo()/构造函数重载 x=10;y=20;第11页/共32页 void print()coutx=xendly=yprint();demo*p2=new Demo();p2-print();delete p1;/释放或撤消动态对象 delete p2;第13页/共32页说明:定义动态对象可以使用另一种方法:demo*p1;p1=new demo()或者:demo*p1;p1=new demo(3,5)释放对象使用delete 第14页/共32页10.1.4 使用默认(缺省)参数的构造函数使用默认(缺省)参数的构造函数1.使用默认参数的构造函数的好处2.默认参数的构造函数的定义方法例10-4方法一:#include iostream.hclass time public:time();/显式声明一个无参(默认)的构造函数第15页/共32页 time(int h,int m,int s):hour(h),minute(m),sec(s)time(int h,int m):hour(h),minute(m),sec(0)time(int h):hour(h),minute(0),sec(0)void set_time();void show_time();private:int hour;int minute;int sec;第16页/共32页time:time()/默认的构造函数 hour=8;int minute=0;int sec=0;void time:set_time()cinhour;cinminute;cinsec;第17页/共32页void time:show_time()couthour:minute:sechour;cinminute;cinsec;void time:show_time()couthour:minute:secendl;第22页/共32页main()time t1;t1.set_time();t1.show_time();time t2(12,20,0);t2.show_time();time t3;t3.show_time();return 0;第23页/共32页说明:1.说明对象时,不给参数,就调用默认构造函数2.用默认构造函数定义对象时,要注意定义方法:time t1;对象名后不能跟()3.定义对象时,根据参数个数调用不同的构造函数4.根据参数个数,还可以定义不同参数个数的构造函数(函数重载):time(int h,int m):hour(h),minute(m);time(int h):hour(h);5一个类只能有一个默认的构造函数第24页/共32页6注意:time(int h,int m,int s):hour(h),minute(m),sec(s);time(int h,int m):hour(h),minute(m);time(int h):hour(h);构造函数的声明和:time(int h=8,int m=0,int s=0)构造构造函数的声明的差别函数的声明的差别前者参数个数固定,是重载构造函数,后者参数个数可前者参数个数固定,是重载构造函数,后者参数个数可变。变。小结:小结:1.构造函数:带参数的构造函数:解决初始化的灵活性构造函数:带参数的构造函数:解决初始化的灵活性例例10-12.带参数的构造函数:解决对象的初始化,带参数的构造函数:解决对象的初始化,例,例10-23.构造函数的重载:解决参数个数和类型不同的问题,构造函数的重载:解决参数个数和类型不同的问题,例例10-34.使用默认参数的构造函数;解决初始化时参数个数问使用默认参数的构造函数;解决初始化时参数个数问题,例题,例10-4第25页/共32页10.2 析构函数析构函数 用来撤消一个对象的。析构函数的定义:在定义类时:类名(参数)在定义类外时:类名:类名(参数)例10-5:#include iostream.h class Demo private:int x,y;第26页/共32页public:Demo(int a,int b)/建立构造函数 x=a;y=b;Demo()/函数重载 Demo()/析构函数 couthelloendl;void Print()coutx=x y=yendl;第27页/共32页 Demo d(10,20);main()void fun();Demo d1(3,5);d1.Print();fun();d.Print();/撤消d void fun()Demo d22=Demo(1,2),Demo(3,4);/创建对象数组 for(int i=0;i3;i+)d2i.Print();/撤消d2 第28页/共32页输出结果:d /定义对象 d1 d20 d21 d21 /撤消对象 d20 d1dx=3 y=5x=1 y=2x=3 y=4x=10 y=20说明:析构函数不仅释放对象,还可以执行程序体。释放对象的次序是:先构造的后析构(先用的后释放)。第29页/共32页10.3 对象的赋值和复制对象的赋值和复制10.3.1 对象的赋值对象的赋值#unclude“iosteam”class time public:time(int h=8,int m=0,int s=0);void set_time();void show_time();private:int hour;int minute;int sec;time time1(10,10,10),time2;time2=time1;第30页/共32页10.3.2 对象的复制对象的复制time time1(10,10,10);time time2(time1);或者:time time2=time1;第31页/共32页感谢您的观看!第32页/共32页

    注意事项

    本文(章构造函数和析构函数.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开