c++之对象的初始化与销毁:构造函数与析构函数课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《c++之对象的初始化与销毁:构造函数与析构函数课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 对象 初始化 销毁 构造 函数 课件
- 资源描述:
-
1、08:43:5008:43:50第四章第四章 对象的初始化与销毁:构造函数与析构函数对象的初始化与销毁:构造函数与析构函数本章主要内容:本章主要内容:1.1.构造函数、拷贝构造函数构造函数、拷贝构造函数 重点重点 2.2.构造函数的初始化列表构造函数的初始化列表 重点、难点重点、难点 3.3.析构函数析构函数 重点重点总体要求:总体要求:理解构造函数与析构函数的必要性与特殊性,掌握它们的理解构造函数与析构函数的必要性与特殊性,掌握它们的使用方法使用方法1ppt课件08:43:5008:43:501 1 对象的初始化对象的初始化 1.1.成员变量全部公有时的初始化成员变量全部公有时的初始化 类的
2、成员变量都是公有的类的成员变量都是公有的,此时对该类对象的初始化可以此时对该类对象的初始化可以与与C C中对结构体变量的初始化一样中对结构体变量的初始化一样 class person class person public:public:char name15;char name15;intint age;age;address address addraddr;class address class address public:public:long long telenumtelenum;char addr30;char addr30;person p1=person p1=张三张三,2
3、3,23,8911114,LanZhou University;8911114,LanZhou University;缺点:缺点:数据完全外露,没有实现信息隐藏数据完全外露,没有实现信息隐藏 实质是对象中成员变量的初始化实质是对象中成员变量的初始化,有有3 3种常见方法种常见方法2ppt课件08:43:5008:43:502.2.使用公有的成员函数完成对象的初始化使用公有的成员函数完成对象的初始化在类中提供公有的成员函数,对象通过调用这样的成员函在类中提供公有的成员函数,对象通过调用这样的成员函数对其内部的成员进行初始化数对其内部的成员进行初始化 例:银行帐户类例:银行帐户类 class Ac
4、count class Account char sName32;char sName32;char sID20;char sID20;float float fBalancefBalance;public:public:void void Initialze(charInitialze(char *,char char*,float);,float);void void Account:InitializeAccount:Initialize(char char*name,charname,char *id,id,float amount)float amount)strcpy(sName,
5、namestrcpy(sName,name););strcpy(sID,idstrcpy(sID,id););fBalancefBalance=amount;=amount;void main()void main()Account acc;Account acc;acc.Initializeacc.Initialize(张三张三,s9801,1000);,s9801,1000);缺点:缺点:客户程序员容易忘记调用这样的函数,对象的初始化得客户程序员容易忘记调用这样的函数,对象的初始化得不到保障不到保障3ppt课件08:43:5008:43:503.3.构造函数构造函数(constructor
6、)(constructor)构造函数是类中特殊的成员函数,构造函数是类中特殊的成员函数,其函数名与类名相同其函数名与类名相同创建对象时系统创建对象时系统自动调用自动调用构造函数构造函数 创建对象的两种方法:创建对象的两种方法:.定义类类型的变量定义类类型的变量 .用用newnew运算符动态产生对象运算符动态产生对象 无论用那种方法,都会无论用那种方法,都会自动调用自动调用构造函数构造函数 不是由客户程序员人为调用不是由客户程序员人为调用,而是而是自动调用自动调用例例:.:.银行帐户类银行帐户类 .日期类日期类 把给成员变量赋初值的操作写在构造函数中把给成员变量赋初值的操作写在构造函数中,就能初
7、始化就能初始化成员变量:对象一旦被创建成员变量:对象一旦被创建,马上调用构造函数马上调用构造函数,在能对对在能对对象进行其它操作之前象进行其它操作之前,对象的成员变量已具有确定的值对象的成员变量已具有确定的值4ppt课件08:43:5008:43:50构造函数的特殊性与必要性构造函数的特殊性与必要性函数名与类名相同函数名与类名相同在定义和声明时,不能说明构造函数的返回值类型,构造在定义和声明时,不能说明构造函数的返回值类型,构造函数根本不返回任何值函数根本不返回任何值一个类的构造函数可以有多个:一个类的构造函数可以有多个:构造函数允许重载构造函数允许重载,一个,一个构造函数对应一种创建对象的方
8、法构造函数对应一种创建对象的方法构造函数可以带有形参,也可以不带形参,创建对象时构造函数可以带有形参,也可以不带形参,创建对象时自自动调用参数类型、数目均能匹配的一个动调用参数类型、数目均能匹配的一个。实参通过在创建。实参通过在创建对象时在对象名后的括号中传递给形参,若调用的是不带对象时在对象名后的括号中传递给形参,若调用的是不带参数的构造函数,则省略括号。无论带参与否,程序中都参数的构造函数,则省略括号。无论带参与否,程序中都不能通过对象名或对象指针显式调用构造函数不能通过对象名或对象指针显式调用构造函数 例:例:Date dtObj(2004,10,11);Date dtObj(2004,
9、10,11);Date Date*pDtObjpDtObj=new Date(2004,10,12);=new Date(2004,10,12);Date Date dtObjDftdtObjDft;Date Date*pDtpDt=new Date;=new Date;5ppt课件08:43:5008:43:50构造函数的特殊性与必要性(续)构造函数的特殊性与必要性(续)类中未显式提供构造函数时类中未显式提供构造函数时,C+,C+会自动添加一个默认构造会自动添加一个默认构造函数函数,该构造函数不带有形参该构造函数不带有形参,且函数体为空且函数体为空,在后台起作用在后台起作用;若类中显式提供了
10、构造函数若类中显式提供了构造函数,则不再添加默认构造函数则不再添加默认构造函数使用默认构造函数的情况下,若创建的对象是全局对象或使用默认构造函数的情况下,若创建的对象是全局对象或静态对象静态对象,则成员变量的值全部被置为相应类型的则成员变量的值全部被置为相应类型的0 0值,否值,否则成员变量的值不确定则成员变量的值不确定应尽可能提供自己的构造函数,而不使用默认的构造函数应尽可能提供自己的构造函数,而不使用默认的构造函数6ppt课件08:43:5008:43:502 2 拷贝构造函数拷贝构造函数(copy-constructor)(copy-constructor)一种特殊的构造函数一种特殊的构
展开阅读全文