第章_构造函数和析构函数.ppt

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

第 3 章 构造函数和析构函数 一、构造函数 二、构造函数的重载 三、默认构造函数和缺省参数的构造函数 四、拷贝构造函数 五、析构函数 六、一个类的对象作为另一个类的数据成员 七、常对象与常对象成员 八、类作用域 一、构造函数 1、构造函数的定义格式 2、说明 3、功能描述 4、举例 5、练习 1、构造函数的定义格式 ?class A ? { ???? public: ???????? A() ??????? {//....} ? }; 2、说明 ? 函数名与类名同 ? 是类的成员函数 ? 一般是公有的 ? 不能有返回值,也没有返回类型 ? 可以有形参 ? 形参可以有默认值 ? 可以重载 ? 在创建对象时,被系统自动调用 3、功能描述 创建对象 为对象分配空间 初始化其成员 4、举例 class A { int x; public: A() { x=10; } }; 练习: 分析下列程序,写出运行结果 #include iostream.h class A { ?? private: ???????? int x; ???????? int y; ?? public: ??????? A(int a,int b) ??????? {x=a;y=b;} ??????? void print() ??????? {coutx,yendl;} }; 二、构造函数的重载 1、什么是类的成员函数的重载? 2、举例 3、练习 1、什么是类的成员函数的重载? ? 一个类中出现两个以上同名的成员函数时。(注意应避免重载二义性错误) 2、举例 class A { ?? public: ????? A(){//....} ????? A(int x){//....} }; void main() { ?? A obj1;//系统自动调用A()形式 ?? A obj2(10);//系统自动调用A(int x)形式 } 练习: 1、分析下列程序的运行结果 #include iostream.h class A { ?? private: ???????? int x; ???????? int y; ?? public: ??????? A() ??????? {x=0;y=1;} ??????? A(int a) ??????? {x=a;y=10;} ??????? 练习: 2、分析下列程序 #include iostream.h class A { ?? private: ???????? int x; ???????? int y; ?? public: ??????? A() ??????? {x=0;y=1;} ??????? A(int a=0) ??????? {x=a;y=10;} 三、默认构造函数和缺省参数的构造函数 1、默认构造函数 2、缺省参数的构造函数 1、默认构造函数 默认构造函数 class A { ?? private: ???????? int x; ?? public: ???????? void get() ???????? { ???????????? cinx; ????????? } ???????? void show() ???????{coutxendl;} }; 1、默认构造函数 默认构造函数的形式: ?没有形参,函数体为空,仅负责创建对象,为对象分配空间,不做任何初始化工作 1、默认构造函数 默认构造函数的使用场合 只要一个类显式定义了一个构造函数,编译系统就不再提供默认的构造函数 练习: 分析以下程序的运行结果 #include iostream.h class Time { ??? private: ?????? int hour; ?????? int minute; ?????? int second; ??? public: ??????? void disp(); }; 运行结果: -858993460:-858993460:-858993460 为什么? 为什么? 因为没有给类Time定义构造函数,所以编译器为类Time提供了一个默认构造函数,该函数只是完成了对象的创建工作,并没有初始化类的对象,则对象的初始化状态不确定。 在类定义中添加该类的函数成员,添加构造函数 Time() {hour=0;minute=0;second=0;} 则结果为0:0:0 2、缺省参数的构造函数 缺省参数的函数成员应注意避免二义性错误(同前几

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档