第21讲 构造函数和析构函数精选PPT.ppt
《第21讲 构造函数和析构函数精选PPT.ppt》由会员分享,可在线阅读,更多相关《第21讲 构造函数和析构函数精选PPT.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第21讲 构造函数和析构函数第1页,此课件共32页哦第二十一讲第二十一讲第二十一讲第二十一讲 构造函数和析构函数构造函数和析构函数构造函数和析构函数构造函数和析构函数 构造函数构造函数 拷贝构造函数拷贝构造函数 析构函数析构函数 类的组合类的组合第2页,此课件共32页哦一、构造函数一、构造函数P211 功能:对成员变量自动进行初始化。功能:对成员变量自动进行初始化。特性:特性:1必须与所属类同名,无返回值也无函必须与所属类同名,无返回值也无函数类型名,即使是数类型名,即使是void也不行。也不行。即构造函数的定义格式为即构造函数的定义格式为:类名(参数表)类名(参数表)函数体函数体 第3页,此
2、课件共32页哦2创建对象时,由系统自动调用构造函数,创建对象时,由系统自动调用构造函数,程序中不可直接调用。程序中不可直接调用。特性:特性:一、构造函数一、构造函数class Rect /矩形类矩形类 private:int LeftX,TopY,RightX,BottomY;public:Rect(int l,int t,int r,int b);/构造函数构造函数 Rect:Rect(int l,int t,int r,int b)LeftX=l;TopY=t;RightX=r;BottomY=b;void main()Rect rec(2,4,6,2);创建对象创建对象rec时,系统自动
3、时,系统自动调用构造函数调用构造函数Rect,并用,并用实参初始化实参初始化4个私有成员个私有成员变量。变量。第4页,此课件共32页哦3构造函数必须是公有成员,可在类内或构造函数必须是公有成员,可在类内或类外定义。类外定义。4构造函数可以重载。构造函数可以重载。特性:特性:一、构造函数一、构造函数P214第5页,此课件共32页哦一、构造函数一、构造函数class Rect /矩形类矩形类 private:int LeftX,TopY,RightX,BottomY;public:Rect()LeftX=TopY=RightX=BottomY=0;/构造函数构造函数 Rect(int l,int
4、t,int r,int b);/构造函数构造函数 void main()Rect rec1(2,4,6,2),rec2;创建对象创建对象rec2时未给出初始值,系统时未给出初始值,系统自动调用无参构造函数自动调用无参构造函数Rect()(),4个个私有成员变量被初始化为私有成员变量被初始化为0。第6页,此课件共32页哦一、构造函数一、构造函数5若类中未定义构造函数,系统会自动生成若类中未定义构造函数,系统会自动生成一个隐含的空构造函数:一个隐含的空构造函数:称为缺省构造函数。称为缺省构造函数。特性:特性:类名类名()()第7页,此课件共32页哦e.g.21_1 分析程序运行结果。分析程序运行结
5、果。#includeusing namespace std;int n=0;class MyClass private:int a,b;public:MyClass(int i,int j);/有参构造函数有参构造函数 MyClass();/无参构造函数无参构造函数 void show();第8页,此课件共32页哦MyClass:MyClass(int i,int j)a=i;b=j;n+;coutn“:执行有参构造函数执行有参构造函数endl;MyClass:MyClass()a=0;b=0;n+;coutn“:执行无参构造函数执行无参构造函数endl;void MyClass:show()
6、couta=a,b=bshow();ob0=ob1;ob0.show();delete p;创建对象数组时,对每个对象元素自动调用构造函数创建对象数组时,对每个对象元素自动调用构造函数 使用使用new创建动态对象时,自动调用构造函数创建动态对象时,自动调用构造函数 第10页,此课件共32页哦一、构造函数一、构造函数类名类名(形参定义表形参定义表):成员变量成员变量1(形参形参1),成,成员变量员变量2(形参形参2)成员变量成员变量n(形参形参n)构造函数的初始化表构造函数的初始化表class Point /点类点类 private:int x,y;public:Point(int,int);/
7、构造函数构造函数 Point:Point(int xx,int yy):x(xx),y(yy)第11页,此课件共32页哦创建新对象创建新对象A时,若用另一个对象时,若用另一个对象B来来初始化,需使用初始化,需使用拷贝构造函数拷贝构造函数将将B的的值传给值传给A。如:如:Rect rec1(2,4,6,2),rec2(rec1);二、拷贝构造函数二、拷贝构造函数拷贝构造函数是一种特殊的构造函数,其拷贝构造函数是一种特殊的构造函数,其形参为本类对象的引用。用用rec1的值初的值初始化始化rec2第12页,此课件共32页哦 若类中未定义拷贝构造函数,系统会自动生若类中未定义拷贝构造函数,系统会自动生
8、成一个隐含的拷贝构造函数:成一个隐含的拷贝构造函数:1.缺省拷贝构造函数缺省拷贝构造函数类名类名(类名类名&x)*this=x;二、拷贝构造函数二、拷贝构造函数 功能:将对象功能:将对象x赋给被初始化对象。赋给被初始化对象。第13页,此课件共32页哦e.g.21_2 分析程序运行结果。分析程序运行结果。#include#include using namespace std;class MyClass private:char *buf;public:MyClass(char*inf=NULL);/构造函数构造函数 void set(char*s);void DeleteBuf();void
9、show();第14页,此课件共32页哦MyClass:MyClass(char*inf)/构造函数构造函数 if(!inf)buf=NULL;return;buf=new charstrlen(inf)+1;strcpy(buf,inf);void MyClass:set(char*s)/赋值赋值 if(buf)delete buf;buf=new charstrlen(s)+1;strcpy(buf,s);void MyClass:DeleteBuf()/释放内存释放内存 if(buf)delete buf;第15页,此课件共32页哦void MyClass:show()/显示结果显示结果
10、 if(buf)coutbufendl;void main()MyClass ob1(“Hello”),ob2(ob1);/*创建创建ob1时系统调用构造函数时系统调用构造函数 ob1.show();创建创建ob2时系统调用缺省拷贝构造函数时系统调用缺省拷贝构造函数*/ob2.show();/ob1.DeleteBuf();/ob2.show();ob2.set(OK);ob2.show();/若执行这两句话,程序运行终止若执行这两句话,程序运行终止第16页,此课件共32页哦二、拷贝构造函数二、拷贝构造函数2.自定义拷贝构造函数自定义拷贝构造函数类名类名(类名类名&参数参数)函数体函数体 说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第21讲 构造函数和析构函数精选PPT 21 构造 函数 精选 PPT
限制150内