第12章 构造函数.ppt
上传人:sy****28 上传时间:2024-09-10 格式:PPT 页数:42 大小:116KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

第12章 构造函数.ppt

第12章构造函数.ppt

预览

免费试读已结束,剩余 32 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第12章构造函数12.1类与对象12.2构造函数的需要性12.3构造函数的使用12.4析构函数12.5带参数的构造函数12.6重载构造函数12.7默认构造函数12.8类成员初始化的困惑12.9构造类成员12.10构造对象的顺序1.类与对象的区别2.定义对象3.对象的初始化2.定义对象ClassDesk{public:intweight;intheight;intwidth;intlength;};ClassStool{public:intweight;intheight;intwidth;intlength;};Deskda;//全局对象Stoolsa;Voidfn(){staticStoolss;//静态局部对象Deskda;//局部对象//…}Voidmain(){Stoolbs;//局部对象Desk*pd=newDesk;//堆对象Desknd[50];//局部对象数组//…deletepd;//释放堆对象}3.对象的初始化对象的意义表达了现实世界的实体,因此,一旦建立对象,须有一个有意义的初始值。C++建立和初始化对象的过程专门由该类的构造函数来完成。这个构造函数很特殊,只要对象建立,它马上被调用,给对象分配空间和初始化。C++另有一种析构函数,它也是类的成员函数,当对象被撤销时,就会马上被调用,其作用是善后处理。变量初始化的方法:inta=8;int*p=&n;数组初始化的方法:intb[]={1,2,3,4};结构初始化的方法:structStudent{intsemesHours;floatgpa;};voidfn(){Students={100,3.5};//…}但是对类对象来说,如此初始化不行,这是由类的特殊性所决定的。ClassStudent{public://…公共成员…protected:intsemesHours;floatgpa;};voidfn(){Students={100,3.5};//相当于s.semesHours=100;s.gpa=3.5;//…}类的封装性就体现在私有和保护成员是不允许被访问的。类对象的初始化任务,自然就落在了类的成员函数身上,因为他们可以访问保护和私有成员。ClassStudent{public:voidinit(){semesHours=100;gpa=3.5;}//…其他公共成员protected:intsemesHours;floatgpa;};voidfn(){Students;s.init();//类的初始化//函数的其他部分}类的初始化工作是由类的成员函数init()完成的。但这要求我们每建立对象时,都要调用其成员函数才能初始化该对象,这样做很麻烦。我们要求建立对象的同时,自动调用构造函数,省去人为调用的麻烦。也就是说在定义对象的同时,自动调用构造函数为对象进行初始化。我们规定类的构造函数名同类名一样。C++规定与类同名的成员函数是构造函数,在该类的对象创建时,自动被调用。ClassDesk{public:Desk(){weight=10;height=5;width=5;length=5;}protected:intweight;intheight;intwidth;intlength;};ClassStool{public:Stool(){weight=6;height=3;width=3;length=3;}protected:intweight;intheight;intwidth;intlength;};Voidfn(){Deskda;Stoolsa;//…}构造函数可以放在类的外部定义#include<iostream.h>ClassDesk{public:Desk();//构造函数声明protected:intweight;intheight;intwidth;intlength;};ClassStool{public:Stool();//构造函数声明protected:intweight;i