如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
构造函数和析构函数2011-10-13面向对象程序设计1主要内容1.构造函数和析构函数2.几个特殊的构造函数默认构造函数单参数构造函数[转换构造函数]复制构造函数赋值运算符[=]2011-10-13面向对象程序设计20、引子、2011-10-13面向对象程序设计30数据的初始化initialization]数据的初始化[数据的初始化intx=1;doubled=3.14;在基于过程编程中,程序员遇到的错误很在基于过程编程中程序员遇到的错误很多是由于引用了未被初始化的变量.多是由于引用了未被初始化的变量普通变量在使用前未被初始化会造成逻普通变量在使用前未被初始化会造成逻辑错误。辑错误。指针变量在使用前未被初始化会引发运指针变量在使用前未被初始化会引发运行时错误.行时错误2011-10-13面向对象程序设计40普遍变量未初始化普遍变量未初始化2011-10-13面向对象程序设计50指针变量未初始化指针变量未初始化2011-10-13面向对象程序设计60一些健壮一些健壮(robust)的机制一些健壮的机制引用作为一种新提出的健壮的数据访问机制,在建立的时候规定必须初始化,并由系统自动释放.intx;int&r=x;类作为更高级的数据类型,也规定了在使用对象之前必须初始化,或者采用某种机制自动初始化.2011-10-13面向对象程序设计70对象初始化的特殊性对象初始化的特殊性类的特殊性决定了类对象初始化时不能如普通数据一样初始化.intx=1,*pX=&x,&rX=x;structstudents={“Tom”,85};classDatedate={2002,10,30}不能由对象访问私有数据成员.让成员函数访问私有数据成员—调用访问函数和工具函数手动设置调用访问函数和工具函数手动设置2011-10-13面向对象程序设计81、构造函数和析构函数、2011-10-13面向对象程序设计91.1构造函数constructor)构造函数(构造函数C++规定与类同名的成员函数是构造函数;主要用途:给对象赋予有意义的初始值.给数据成员分配内存,然后初始化2011-10-13面向对象程序设计101.1构造函数举例构造函数举例1构造函数举例2011-10-13面向对象程序设计111.1构造函数举例构造函数举例2构造函数举例2011-10-13面向对象程序设计121.1构造函数的特点构造函数的特点:构造函数的特点1).名字与类名相同.没有返回类型.2).构造函数可以重载,用不同的方式创建对象.3).一般由系统自动、隐式的调用.3)..4).访问权限一般为public。5).创建对象引用和对象指针时,不会调用构造函数。2011-10-13面向对象程序设计131.1构造函数举例构造函数举例3—练习构造函数举例练习1、分析下列代码,为类A提供必要的构造函数2011-10-13面向对象程序设计141.1构造函数的重载和匹配构造函数的重载和匹配2011-10-13面向对象程序设计151.2析构函数destructor)析构函数(析构函数有些类在构造对象时,要给对象分配内存,这些内存在对象撤销之前要被释放.当结束对象的生命期时,系统都会调用该类的析构函数.析构函数本身并不删除对象,而是进行系统释放对象内存之前的清理工作.2011-10-13面向对象程序设计161.2析构函数的特点析构函数的特点1).名字是在类名之前加上‘~’,表示逆构造,是构造函数的反函数.2).析构函数没有返回类型,没有参数,只能有一个,而且不能重载.3).析构函数以构造函数相反的顺序被调用.4).用new运算符创建对象时,会自动调用相应的构造函数,在用delete运算符释放时,自动调用析构函数.2011-10-13面向对象程序设计171.2析构函数的调用析构函数的调用2011-10-13面向对象程序设计181.2举例举例构造,先析构后构造,后析构;先象构造和析构的顺序:对2011-10-13192011-10-13面向对象程序设计202011-10-13面向对象程序设计212011-10-13面向对象程序设计22构造a构造a构造b构造a析构b构造a析构a2011-10-13面向对象程序设计232、几个特殊的构造函数、默认构造函数单参数构造函数复制构造函数2011-10-13面向对象程序设计242.1默认default)构造函数默认