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