c构造函数与析构函数

c构造函数与析构函数

ID:36322128

大小:494.31 KB

页数:53页

时间:2019-05-09

c构造函数与析构函数_第1页
c构造函数与析构函数_第2页
c构造函数与析构函数_第3页
c构造函数与析构函数_第4页
c构造函数与析构函数_第5页
资源描述:

《c构造函数与析构函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章构造函数和析构函数构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数是在创建对象时,使用给定的值来将对象初始化。析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作。构造函数是类的成员函数,系统约定构造函数名必须与类名相同。构造函数提供了初始化对象的一种简单的方法。构造函数可以带参数、可以重载,同时没有返回值。classA{floatx,y;public:A(floata,floatb){x=a;y=b;}//构造函数,初始化对象floatSum(void){returnx+y;}voidSet(f

2、loata,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=0;y=0;}voidPrint(void

4、){cout<

5、1,a2;只允许这样定义对象对象开辟了空间,但没有初始化对局部对象,静态对象,全局对象的初始化对于局部对象,每次定义对象时,都要调用构造函数。对于静态对象,是在首次定义对象时,调用构造函数的,且由于对象一直存在,只调用一次构造函数。对于全局对象,是在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)

6、{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、cAa3;//初始化局部静态对象}voidmain(void){cout<<"进入main函数";Aa1(3.0,7.0);//定义局部自动对象f();f();}初始化全局对象进入main函数初始化自动局部对象进入f()函数初始化局部静态变量进入f()函数初始化自动局部对象初始化自动局部对象缺省的构造函数在定义类时,若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数,其格式为:className::className(){}缺省的构造函数并不对所产生对象的数据成员赋初值;即新产生对象的数据成员的值是不确定的。clas

8、sA{floatx,y;public:A(){}//缺省的构造函数,编译器自动产生,可以不写floatSum(void){returnx+y;}voidSet(floata,floatb){x=a;y=b;}voidPrint(void){cout<<"x="<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。