C++面向对象程序设计(第三章).ppt
《C++面向对象程序设计(第三章).ppt》由会员分享,可在线阅读,更多相关《C++面向对象程序设计(第三章).ppt(84页珍藏版)》请在优知文库上搜索。
1、 + + 程 序 设 计程 序 设 计第三章第三章第第3章章 关于类和对象的进一步讨论关于类和对象的进一步讨论 3.1构造函数构造函数 3.2析构函数析构函数 3.3调用构造函数和析构函数的顺序调用构造函数和析构函数的顺序3.4对象数组对象数组 3.5对象指针对象指针 3.6共用数据的保护共用数据的保护 (难点难点)3.7对象的动态建立和释放对象的动态建立和释放 3.8对象的赋值和复制对象的赋值和复制 3.9静态成员静态成员 3.10友元友元 3.11类模板类模板 3.1构造函数构造函数 3.1.1 对象的初始化 3.1.2 构造函数的作用 3.1.3 带参数的构造函数 3.1.4 用参数初始
2、化表初始化数据成员 3.1.5 构造函数的重载 3.1.6 使用默认参数的构造函数确定对象的初始状态确定对象的初始状态3.1.2构造函数的作用构造函数的作用 构造函数的作用:构造函数的作用:p用于为对象分配空间和进行初始化。构造函数的特点:构造函数的特点:p(1)构造函数的名字与它的类名必须相同;p(2)它没有类型,不返回值,为public类型;p(3)它可以带参数,也可以不带参数;p(4)不需要写调用语句,在系统建立对象时由系统自觉调用执行。p(5)如果用户没有定义构造函数,C+系统会自动生成一个空的构造函数。p(6)允许为内联、重载、带缺省形参的函数。#include using name
3、space std;class Time public: Time() hour=0; minute=0; sec=0; void set_time(); void show_time(); private: int hour; int minute; int sec; ;例3.1在例2.3的基础上定义构造成员函数构造函数构造函数int main() Time t1; /定义对象的同时调用了构造函数定义对象的同时调用了构造函数 t1.set_time(); t1.show_time(); Time t2; /定义对象的同时调用了构造函数定义对象的同时调用了构造函数 t2.show_time()
4、; return 0; void Time:set_time()cinhour; cinminute; cinsec;void Time:show_time() couthour:minute:secendl; 说明说明在类Time中定义了构造函数Time,它与所在的类同名。在建立对象时自动执行构造函数,该函数的作用是为对象中的各个数据成员赋初值 0。 注意只有执行构造函数时才为数据成员赋初值。程序运行时首先建立对象t1,并对t1中的数据成员赋初值0,然后执行t1.set_time函数,从键盘输入新值给对象t1的数据成员,再输出t1的数据成员的值。接着建立对象t2,同时对t2中的数据成员赋初值
5、0,最后输出t2的数据成员的初值。10 25 5410:25:54 / 输出输出t1的值的值 0: 0: 0 / 输出输出t2的值的值也可以在类内声明构造函数,然后在类外定义构造函数。也可以在类内声明构造函数,然后在类外定义构造函数。将程序修改为:将程序修改为:Time();然后在类外定义构造函数:Time:Time() hour=0; minute=0; sec=0;/不带参数的构造函数不带参数的构造函数程序运行的情况为:程序运行的情况为:3.1.3 带形参数的构造函数带形参数的构造函数 优点:优点: 实现不同对象的初始化。 一般格式:一般格式:构造函数名(类型 形参1,类型 形参2,)定义
6、对象的格式:定义对象的格式:类名 对象名(实参1,实参2,);例例3.2有两个长方柱,其长、宽、高分别为:(1)12,25,30(2)15,30,21编写程序,在类中用带参数的构造函数,计算它们的体积。分析:分析:可以在类中定义一个计算长方体体积的成员函数计算对象的体积。p#include pusing namespace std;pclass Boxp public:p Box(int,int,int); /带形参的构造函数带形参的构造函数p int volume();p private:p int height;p int width;p int length;p ;pBox:Box(in
7、t h,int w,int len) / 长方体长方体构造函数构造函数p height=h;p width=w;p length=len;p pint Box:volume() / 计算长方体的体积计算长方体的体积p return(height*width*length);p 例例3.2当类中无构造函数时,编译系当类中无构造函数时,编译系统自动生成一个缺省构造函数,统自动生成一个缺省构造函数,但它不会给类的数据成员初始值。但它不会给类的数据成员初始值。pint main()p p Box box1(12,25,30); / 定义对象定义对象box1p cout box1体积= box1.vol
8、ume() endl;p Box box2(15,30,21); / 定义对象定义对象box2p cout box2体积= box2.volume()endl;p return 0;p 例例3.2构造函数Box有3个参数,分别代表长、宽、高。在主函数中定义对象box1时,指定了实参12,25,30。然后调用成员函数计算长方体的体积。程序运行的结果如下: box1体积= 9000 box2体积= 9450 提醒:(1)带形参的构造函数在定义对象时必须指定实参(2)用这种方法可以实现不同对象的初始化。说明说明3.1.4用参数初始化表对数据成员初始化用参数初始化表对数据成员初始化 p构造函数的另一种
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 第三
