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