欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    C++面向对象程序设计(第三章).ppt

    • 资源ID:166499       资源大小:721.50KB        全文页数:84页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    C++面向对象程序设计(第三章).ppt

    + + 程 序 设 计程 序 设 计第三章第三章第第3章章 关于类和对象的进一步讨论关于类和对象的进一步讨论 3.1构造函数构造函数 3.2析构函数析构函数 3.3调用构造函数和析构函数的顺序调用构造函数和析构函数的顺序3.4对象数组对象数组 3.5对象指针对象指针 3.6共用数据的保护共用数据的保护 (难点难点)3.7对象的动态建立和释放对象的动态建立和释放 3.8对象的赋值和复制对象的赋值和复制 3.9静态成员静态成员 3.10友元友元 3.11类模板类模板 3.1构造函数构造函数 3.1.1 对象的初始化 3.1.2 构造函数的作用 3.1.3 带参数的构造函数 3.1.4 用参数初始化表初始化数据成员 3.1.5 构造函数的重载 3.1.6 使用默认参数的构造函数确定对象的初始状态确定对象的初始状态3.1.2构造函数的作用构造函数的作用 构造函数的作用:构造函数的作用:p用于为对象分配空间和进行初始化。构造函数的特点:构造函数的特点:p(1)构造函数的名字与它的类名必须相同;p(2)它没有类型,不返回值,为public类型;p(3)它可以带参数,也可以不带参数;p(4)不需要写调用语句,在系统建立对象时由系统自觉调用执行。p(5)如果用户没有定义构造函数,C+系统会自动生成一个空的构造函数。p(6)允许为内联、重载、带缺省形参的函数。#include using namespace std;class Time public: Time() hour=0; minute=0; sec=0; void set_time(); void show_time(); private: int hour; int minute; int sec; ;例3.1在例2.3的基础上定义构造成员函数构造函数构造函数int main() Time t1; /定义对象的同时调用了构造函数定义对象的同时调用了构造函数 t1.set_time(); t1.show_time(); Time t2; /定义对象的同时调用了构造函数定义对象的同时调用了构造函数 t2.show_time(); return 0; void Time:set_time()cinhour; cinminute; cinsec;void Time:show_time() couthour:minute:secendl; 说明说明在类Time中定义了构造函数Time,它与所在的类同名。在建立对象时自动执行构造函数,该函数的作用是为对象中的各个数据成员赋初值 0。 注意只有执行构造函数时才为数据成员赋初值。程序运行时首先建立对象t1,并对t1中的数据成员赋初值0,然后执行t1.set_time函数,从键盘输入新值给对象t1的数据成员,再输出t1的数据成员的值。接着建立对象t2,同时对t2中的数据成员赋初值0,最后输出t2的数据成员的初值。10 25 5410:25:54 / 输出输出t1的值的值 0: 0: 0 / 输出输出t2的值的值也可以在类内声明构造函数,然后在类外定义构造函数。也可以在类内声明构造函数,然后在类外定义构造函数。将程序修改为:将程序修改为:Time();然后在类外定义构造函数:Time:Time() hour=0; minute=0; sec=0;/不带参数的构造函数不带参数的构造函数程序运行的情况为:程序运行的情况为:3.1.3 带形参数的构造函数带形参数的构造函数 优点:优点: 实现不同对象的初始化。 一般格式:一般格式:构造函数名(类型 形参1,类型 形参2,)定义对象的格式:定义对象的格式:类名 对象名(实参1,实参2,);例例3.2有两个长方柱,其长、宽、高分别为:(1)12,25,30(2)15,30,21编写程序,在类中用带参数的构造函数,计算它们的体积。分析:分析:可以在类中定义一个计算长方体体积的成员函数计算对象的体积。p#include pusing namespace std;pclass Boxp public:p Box(int,int,int); /带形参的构造函数带形参的构造函数p int volume();p private:p int height;p int width;p int length;p ;pBox:Box(int h,int w,int len) / 长方体长方体构造函数构造函数p height=h;p width=w;p length=len;p pint Box:volume() / 计算长方体的体积计算长方体的体积p return(height*width*length);p 例例3.2当类中无构造函数时,编译系当类中无构造函数时,编译系统自动生成一个缺省构造函数,统自动生成一个缺省构造函数,但它不会给类的数据成员初始值。但它不会给类的数据成员初始值。pint main()p p Box box1(12,25,30); / 定义对象定义对象box1p cout box1体积= box1.volume() endl;p Box box2(15,30,21); / 定义对象定义对象box2p cout box2体积= box2.volume()endl;p return 0;p 例例3.2构造函数Box有3个参数,分别代表长、宽、高。在主函数中定义对象box1时,指定了实参12,25,30。然后调用成员函数计算长方体的体积。程序运行的结果如下: box1体积= 9000 box2体积= 9450 提醒:(1)带形参的构造函数在定义对象时必须指定实参(2)用这种方法可以实现不同对象的初始化。说明说明3.1.4用参数初始化表对数据成员初始化用参数初始化表对数据成员初始化 p构造函数的另一种数据初始化写法:构造函数的另一种数据初始化写法:p利用参数初始化表的方法在函数的首部就能实现数据成员初始化。p格式:格式:p函数名函数名(类型类型1 形参形参1,类型,类型2 形参形参2):成员名成员名1(形参形参1),成员名成员名2(形参形参2) p功能:功能:p执行构造函数时,将形参1的值赋予成员1,将形参2的值赋予成员2,形参的值由定义对象时的实参值决定。p定义对象的格式依然是:定义对象的格式依然是:类名类名 对象名对象名( 实参实参1,实参,实参2);例:定义带形参初始化表的构造函数例:定义带形参初始化表的构造函数Box:Box( int h, int w, int len): height ( h),width(w), length( len ) 定义对象:Box box1(12,25,30);Box box2(15,30,21);3.1.5构造函数的重载构造函数的重载 例3.3:在例3.2的基础上定义两个构造函数其中一个无参数,另一个有参数。#include using namespace std;class Box public: Box(); /不带形参的构造函数为系统默认函数不带形参的构造函数为系统默认函数 Box(int h,int w ,int len): height(h), width(w), length(len) int volume(); private: int height; int width; int length; ;这是什么这是什么?构造函数也可以重载构造函数也可以重载。一个类可以有多个同名构造函数,一个类可以有多个同名构造函数,函数参数的个数、参数的类型各不函数参数的个数、参数的类型各不相同相同定义对象是只执行一个构造函数定义对象是只执行一个构造函数Box:Box() height=10; width=10; length=10; int Box:volume() return(height*width*length); pint main()p p Box box1; /执行第一个构造函数执行第一个构造函数 p coutbox1 体积= box1.volume()endl;p Box box2(15,30,25); /执行第二个执行第二个 构造函数构造函数 p coutbox2 体积= box2.volume()endl;p return 0;p 说明说明例子中定义了两个构造函数,一个无参数另一个带三个参数。系统根据定义对象的格式决定调用哪个构造函数。对象box1没有实参系统为它调用无参数的构造函数;对象box2带三个实参系统为它调用带形参的构造函数。3.1.6使用默认参数值的构造函数使用默认参数值的构造函数 C+允许在构造函数里为形参指定默认值,如果创建对象时,未给出相应的实参时,系统将用形参的默认值为形参赋值。格式:格式:p函数名(类型 形参1=常数,类型 形参2=常数,);注意事项:注意事项:p不要同时使用重载构造函数和带默认值的构造函不要同时使用重载构造函数和带默认值的构造函数。数。#include using namespace std;class Box public: Box(int w=10,int h=10,int len=10); int volume(); private: int height; int width; int length; ;例例3.4:将例:将例3.3中的构造函数改用带默认中的构造函数改用带默认值的参数,长、宽、高的默认值都是值的参数,长、宽、高的默认值都是10。如果在类外定义构造函数,应该在如果在类外定义构造函数,应该在声声明构造函数时指定默认参数值明构造函数时指定默认参数值,在定,在定义函数时可以不再指定默认参数值。义函数时可以不再指定默认参数值。pBox:Box(int w, int h, int len)p height=h;p width=w;p length=len;p pint Box:volume()p return(height*width*length);p p pint main()p p Box box1;p coutbox1 体积= box1.volume()endl;p Box box2(15);p coutbox2 体积 box2.volume()endl;p Box box3(15,30);p coutbox3 体积 box3.volume()endl;p Box box4(15,30,20);p coutbox4 体积box4.volume()endl;p return 0;p 程序运行结果为:程序运行结果为:box1 体积=1000box2 体积=1500box3 体积=4500box4 体积=9000构造函数也可以改写成带参数初始化表的形式: Box:Box( int h, int w, int len): height ( h),width(w), length( len ) 整个函数只需一行,简单方便。整个函数只需一行,简单方便。3.2析构函数析构函数 p作用:作用:与构造函数相反,当对象的生命周期结束时,系统自动调用析构函数,收回对象占用的内存空间。p析构函数的特征析构函数的特征析构函数名以符号开始后跟类名析构函数没有数据类型、返回值、形参。由于没有形参没有形参所以析构函数不能重载不能重载。如果程序员没有定义析构函数,C+编译系统会自动生成一个析构函数。例例3.5 包含构造函数和析构函数的包含构造函数和析构函数的C+程序程序#include #include using namespace std;class Student public: Student(int n,string nam,char s) num=n; name=nam; sex=s; coutConstructor called.endl; Student() coutDestructor called.endl; void display() coutnum:numendl; coutname:nameendl; coutsex:sexendlendl; private: int num; stri

    注意事项

    本文(C++面向对象程序设计(第三章).ppt)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

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

    收起
    展开