Chapter关于类和对象的进一步讨论_第1页
Chapter关于类和对象的进一步讨论_第2页
Chapter关于类和对象的进一步讨论_第3页
Chapter关于类和对象的进一步讨论_第4页
Chapter关于类和对象的进一步讨论_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C++面向对象程序设计》---------斯庆巴拉回顾第2章类和对象面向对象程序设计的基本概念对象、对象的两个要素、类、类面向对象程序设计的三大特性类的定义对象的定义对象的使用2第3章关于类和对象的进一步讨论本章内容3.1构造函数3.2析构函数3.3调用构造函数和析构函数的顺序

3.4对象数组3.5对象指针3.6共用数据的保护4本章内容3.7对象的动态建立和释放3.8对象的赋值和复制3.9静态成员3.10友元3.11类模板5目标理解构造函数与析构函数的作用;熟练掌握构造函数和析构函数的定义和使用。掌握对象数组、对象指针的使用,以及对象的动态建立与释放;了解对象的赋值与复制理解静态成员和友元的作用熟练掌握静态成员和友元的定义与使用了解类模板的定义与使用6本章内容3.1构造函数

3.2析构函数3.3调用构造函数和析构函数的顺序3.4对象数组3.5对象指针3.6共用数据的保护3.7对象的动态建立和释放73.1构造函数

3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数83.1构造函数

3.1.1对象的初始化QS1:什么是对象的初始化?QS2:为什么要给对象初始化?QS3:如何给对象初始化?注意:对象的初始化不能在类的数据成员定义中进行。93.1构造函数3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数103.1构造函数

3.1.2构造函数的作用构造函数是类中一种特殊的成员函数。构造函数的作用是在系统创建对象时,给对象的数据成员进行初始化。格式:类名(参数表){

函数体;}113.1构造函数

3.1.2构造函数的作用构造函数的特点1、构造函数名字必须与类名相同,不具有任何类型,也不返回任何值。2、构造函数的权限必须是public。3、构造函数不需要也不能被用户调用,而是在创建对象时由系统自动调用执行。4、每个类都必须有一个构造函数,用户没有定义时,系统会自动生成一个空的构造函数。123.1构造函数

3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数133.1构造函数

3.1.3无参和带参的构造函数(一)无参数的构造函数(默认构造函数)格式:

类名()

{

数据成员=初始值;

}对象的定义格式:类名对象名;注意类外定义的格式143.1构造函数

3.1.3无参和带参的构造函数(一)无参数的构造函数(默认构造函数)应用举例为Circle类定义无参的构造函数;在main函数中定义Circle类的2个对象;分析:系统在什么时候调用构造函数?多个对象时构造函数的调用顺序?153.1构造函数

3.1.3无参和带参的构造函数(一)无参数的构造函数(默认构造函数)问题:无参构造函数有什么缺点?163.1构造函数

3.1.3无参和带参的构造函数(二)带参数的构造函数类名(类型1参数1,类型2参数2,……)

{

数据成员1=参数1;数据成员2=参数2;……}对象的定义格式为:类名对象名(实参1,实参2,……);173.1构造函数

3.1.3无参和带参的构造函数(二)带参数的构造函数应用举例为Circle类定义带参数的构造函数;在main函数中定义Circle类的2个对象;分析:系统在什么时候调用构造函数?多个对象时构造函数的调用顺序?183.1构造函数

3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数193.1构造函数

3.1.4用参数初始化表对数据成员初始化参数初始化表——对数据成员的初始化放在函数首部实现。格式:

类名(类型1参数1,类型2参数2,…):数据成员1(参数1),数据成员2(参数2),……{}举例:Circle类。203.1构造函数

3.1.4用参数初始化表对数据成员初始化参数初始化表——对数据成员的初始化放在函数首部实现。注意:对类类型的数据成员用构造函数初始化时,只能用带初始式的构造函数。举例:213.1构造函数#include<iostream>usingnamespacestd;classClassA//类ClassA的定义{public:

intx;

ClassA(intxx)//类ClassA的构造函数

{ cout<<“调用ClassA构造函数!"<<endl; x=xx;}};223.1构造函数classClassB//类ClassB的定义{public:

ClassB(int,int);//类ClassB的构造函数

voidprint();private:

intb;ClassAa;//类嵌套};ClassB::ClassB(intx,int

y):a(x),b(y){ cout<<“调用ClassB构造函数!"<<endl;}voidClassB::print(){ cout<<"a="<<a.x<<"\nb="<<b<<endl;}233.1构造函数intmain(){

ClassB

b1(2200,3600); b1.print();return0;}运行结果:调用ClassA构造函数!调用ClassB构造函数!a=2200b=3600243.1构造函数

3.1.4用参数初始化表对数据成员初始化参数初始化表——对数据成员的初始化放在函数首部实现。练习题:

对带出生年月属性的学生类定义对象,并通过调用构造函数来对对象信息进行初始化。253.1构造函数3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数263.1构造函数

3.1.5构造函数的重载定义在一个类中可以定义多个构造函数,其参数的个数、顺序或类型不相同。调用建立对象时,系统将根据对象的实参个数、类型去匹配对应的构造函数。例如:Circle类273.1构造函数3.1.1对象的初始化3.1.2构造函数的作用3.1.3无参和带参的构造函数3.1.4用参数初始化表对数据成员初始化3.1.5构造函数的重载3.1.6带默认参数的构造函数283.1构造函数

3.1.6带默认参数的构造函数格式:

类名(类型1参数1=默认值1,类型2参数2=默认值2,……)

{

数据成员1=参数1;数据成员2=参数2;……}293.1构造函数

3.1.6带默认参数的构造函数应用举例为Circle类定义带默认参数的构造函数;在main函数中定义Circle类的多个不同个数参数的对象,观察输出结果。分析:带默认参数的构造函数的优点?303.1构造函数

3.1.6带默认参数的构造函数注意:如果该类中定义了全部是默认参数的构造函数后,不能再定义重载构造函数。313.1构造函数

3.1.6带默认参数的构造函数练习题定义一个日期类Date;定义各种构造函数来实现以下形式的对象定义:

Dated1,d2(2002),d3(1998,4,4);Dated4(1980,8,8);定义一个带默认参数的构造函数,实现以上对象的定义32本章内容3.1构造函数

3.2析构函数3.3调用构造函数和析构函数的顺序3.4对象数组3.5对象指针3.6共用数据的保护3.7对象的动态建立和释放333.2析构函数(一)析构函数的作用析构函数的作用是在系统撤销对象占用的内存之前,完成一些清理工作。格式

~类名()

{

函数体;

}343.2析构函数(二)析构函数的特点1、析构函数名是在类名前加“~”,无返回类型,无参数。2、析构函数无参数,故不能被重载。3、析构函数的权限必须是public。4、当系统撤销对象之前将调用析构函数。353.2析构函数(二)析构函数的特点应用举例为Circle类定义析构函数;在main函数中定义Circle类的对象,观察输出结果。36本章内容3.1构造函数

3.2析构函数3.3调用构造函数和析构函数的顺序

3.4对象数组3.5对象指针3.6共用数据的保护3.7对象的动态建立和释放373.3调用构造函数和析构函数的顺序QS:1、什么时候执行构造函数和析构函数?2、当系统中有多个对象时,按什么顺序来执行构造函数和析构函数?举例:阅读以下程序,分析程序的执行结果。

Time_lianxi.cpp383.3调用构造函数和析构函数的顺序总结:1、在系统创建对象时调用构造函数;在系统撤销对象之前调用析构函数。2、当系统中有多个对象时,先构造的对象后析构,后构造的对象先析构。先构造的后析构,后构造的先析构39小结构造函数和析构函数的作用构造函数和析构函数的定义和使用构造函数和析构函数的调用顺序40实验题定义数组类,并定义该类对象实现各种操作。分析数据成员:长度、元素分析成员函数:最大值、最小值、查询、删除、排序、插入功能。

定义数组类定义对象,通过对象实现各种操作41练习题定义栈类,并定义该类对象实现各种栈操作。什么叫栈?栈的属性?栈的基本操作?定义栈类定义对象,通过对象实现栈各种操作42练习题定义栈类,并定义该类对象实现各种栈操作。栈:插入和删除操作只能在同一端进行的表。栈的属性?栈的基本操作?定义栈类定义对象,通过对象实现栈各种操作43练习题定义栈类,并定义该类对象实现各种栈操作。栈:插入和删除操作只能在同一端进行的表。栈的属性:栈顶指针、元素栈的基本操作?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论