欢迎来到天天文库
浏览记录
ID:39491310
大小:698.50 KB
页数:53页
时间:2019-07-04
《构造函数和析构函数1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第十章构造函数和析构函数2构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数是在创建对象时,使用给定的值来将对象初始化。析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作。3构造函数是类的成员函数,系统约定构造函数名必须与类名相同。构造函数提供了初始化对象的一种简单的方法。构造函数可以带参数、可以重载,同时没有返回值。4classA{floatx,y;public:A(floata,floatb){x=a;y=b;}//构造函数,初始化对象floatSum(void){returnx+y;
2、}voidSet(floata,floatb){x=a;y=b;}Print(void){cout<<"x="<3、在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。3.一个类可以定义若干个构造函数。当定义多个构造函数时,必须满足函数重载的原则。64.构造函数可以指定参数的缺省值。5.若定义的类要说明该类的对象时,构造函数必须是公有的成员函数。如果定义的类仅用于派生其它类时,则可将构造函数定义为保护的成员函数。由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成员均能进行初始化。7classA{floatx,y;public:A(floata,floatb=10){x=a;y=b;}A(4、){x=0;y=0;}voidPrint(void){cout<5、x<<'t'<6、a1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}122211classA{floatx,y;public:A(floata,floatb){x=a;y=b;cout<<"初始化自动局部对象";}A(){x=0;y=0;cout<<"初始化静态局部对象";}A(floata){x=a;y=0;cout<<"初始化全局对象";}voidPrint(void){cout<7、义全局对象voidf(void){cout<<"进入f()函数";Aa2(1,2);staticAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象12缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::cla8、ssName(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。13classA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(
3、在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。3.一个类可以定义若干个构造函数。当定义多个构造函数时,必须满足函数重载的原则。64.构造函数可以指定参数的缺省值。5.若定义的类要说明该类的对象时,构造函数必须是公有的成员函数。如果定义的类仅用于派生其它类时,则可将构造函数定义为保护的成员函数。由于构造函数属于类的成员函数,它对私有数据成员、保护的数据成员和公有的数据成员均能进行初始化。7classA{floatx,y;public:A(floata,floatb=10){x=a;y=b;}A(
4、){x=0;y=0;}voidPrint(void){cout<5、x<<'t'<6、a1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}122211classA{floatx,y;public:A(floata,floatb){x=a;y=b;cout<<"初始化自动局部对象";}A(){x=0;y=0;cout<<"初始化静态局部对象";}A(floata){x=a;y=0;cout<<"初始化全局对象";}voidPrint(void){cout<7、义全局对象voidf(void){cout<<"进入f()函数";Aa2(1,2);staticAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象12缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::cla8、ssName(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。13classA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(
5、x<<'t'<6、a1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}122211classA{floatx,y;public:A(floata,floatb){x=a;y=b;cout<<"初始化自动局部对象";}A(){x=0;y=0;cout<<"初始化静态局部对象";}A(floata){x=a;y=0;cout<<"初始化全局对象";}voidPrint(void){cout<7、义全局对象voidf(void){cout<<"进入f()函数";Aa2(1,2);staticAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象12缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::cla8、ssName(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。13classA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(
6、a1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}122211classA{floatx,y;public:A(floata,floatb){x=a;y=b;cout<<"初始化自动局部对象";}A(){x=0;y=0;cout<<"初始化静态局部对象";}A(floata){x=a;y=0;cout<<"初始化全局对象";}voidPrint(void){cout<7、义全局对象voidf(void){cout<<"进入f()函数";Aa2(1,2);staticAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象12缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::cla8、ssName(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。13classA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(
7、义全局对象voidf(void){cout<<"进入f()函数";Aa2(1,2);staticAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象12缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::cla
8、ssName(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。13classA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(
此文档下载收益归作者所有