构造函数和析构函数01

上传人:ji****n 文档编号:47809857 上传时间:2018-07-05 格式:PDF 页数:15 大小:99.95KB
返回 下载 相关 举报
构造函数和析构函数01_第1页
第1页 / 共15页
构造函数和析构函数01_第2页
第2页 / 共15页
构造函数和析构函数01_第3页
第3页 / 共15页
构造函数和析构函数01_第4页
第4页 / 共15页
构造函数和析构函数01_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《构造函数和析构函数01》由会员分享,可在线阅读,更多相关《构造函数和析构函数01(15页珍藏版)》请在金锄头文库上搜索。

1、第十章第十章 构造函数和析构函数构造函数和析构函数构造函数和析构函数是在类体中说明的两种构造函数和析构函数是在类体中说明的两种特殊的成员函数特殊的成员函数。构造函数是在创建对象时,使用给定的值来构造函数是在创建对象时,使用给定的值来将对象初始化。将对象初始化。析构函数的功能正好相反,是在系统释放对析构函数的功能正好相反,是在系统释放对 象前,对对象做一些善后工作象前,对对象做一些善后工作。构造函数是类的成员函数,系统约定构造函构造函数是类的成员函数,系统约定构造函数名必须与类名相同。数名必须与类名相同。构造函数提供了初始构造函数提供了初始化对象的一种简单的方法化对象的一种简单的方法。构造函数构

2、造函数可以带参数、可以重载可以带参数、可以重载,同时没有,同时没有返回值。返回值。class Aclass Aclass Aclass A float x,y;float x,y;float x,y;float x,y; public:public:public:public: A(float a,float b) x=a; y=b;/A(float a,float b) x=a; y=b;/A(float a,float b) x=a; y=b;/A(float a,float b) x=a; y=b;/构造函数,初始化对象构造函数,初始化对象 float Sum(void) return

3、x+y; float Sum(void) return x+y; float Sum(void) return x+y; float Sum(void) return x+y; void Set(float a,float b) x=a;void Set(float a,float b) x=a;void Set(float a,float b) x=a;void Set(float a,float b) x=a; y=b;y=b;y=b;y=b; Print(void) cout“x=“xt“y=“yendl;Print(void) cout“x=“xt“y=“yendl;Print(voi

4、d) cout“x=“xt“y=“yendl;Print(void) cout“x=“xt“y=“yendl; ; ; ; ; void main(void)void main(void)void main(void)void main(void) A a1(2.0, 3.0);/A a1(2.0, 3.0);/A a1(2.0, 3.0);/A a1(2.0, 3.0);/定义时调用构造函数初始化定义时调用构造函数初始化 A a2(1.0,2.0);A a2(1.0,2.0);A a2(1.0,2.0);A a2(1.0,2.0); a2.Set(10.0, 20.0); /a2.Set(1

5、0.0, 20.0); /a2.Set(10.0, 20.0); /a2.Set(10.0, 20.0); /利用成员函数重新为对象赋利用成员函数重新为对象赋值值 a1.Print(); a1.Print(); a1.Print(); a1.Print(); a2.Print();a2.Print();a2.Print();a2.Print(); 对构造函数,说明以下几点:对构造函数,说明以下几点:1 1 1 1. . . .构造函数的函数名必须与类名相同构造函数的函数名必须与类名相同。构造构造 函数的主要作用是完成初始化对象的数据成函数的主要作用是完成初始化对象的数据成 员以及其它的初始化工

6、作员以及其它的初始化工作。2 2 2 2. . . . 在定义构造函数时,在定义构造函数时,不能指定函数返回值不能指定函数返回值 的类型,也不能指定为的类型,也不能指定为voidvoidvoidvoid类型类型。3. 3. 3. 3. 一个类可以定义若干个构造函数。当定义一个类可以定义若干个构造函数。当定义 多个构造函数时,多个构造函数时,必须满足函数重载的原则。必须满足函数重载的原则。4.4. 4.4.构造函数可以指定参数的缺省值。构造函数可以指定参数的缺省值。5.5. 5.5.若定义的类要说明该类的对象时,构造函若定义的类要说明该类的对象时,构造函 数必须是数必须是公有的成员函数公有的成员

7、函数。如果定义的类仅。如果定义的类仅 用于派生其它类时,则可将构造函数定义为用于派生其它类时,则可将构造函数定义为 保护的成员函数保护的成员函数。由于构造函数属于类的成员函数,它对私有由于构造函数属于类的成员函数,它对私有 数据成员、保护的数据成员和公有的数据成数据成员、保护的数据成员和公有的数据成 员员均能进行初始化均能进行初始化。class Aclass Aclass Aclass A float x,y;float x,y;float x,y;float x,y; public:public:public:public: A(float a, float b=10)A(float a,

8、float b=10)A(float a, float b=10)A(float a, float b=10) x=a; y=b; x=a; y=b; x=a; y=b; x=a; y=b; A()A()A()A() x=0; y=0; x=0; y=0; x=0; y=0; x=0; y=0; void Print(void) void Print(void) void Print(void) void Print(void) coutxtyendl; coutxtyendl; coutxtyendl; coutxtyendl; ; ; ; ; void main(void)void mai

9、n(void)void main(void)void main(void) A A A A a1,a1,a1,a1, a2(20.0), a3(3.0, 7.0); a2(20.0), a3(3.0, 7.0); a2(20.0), a3(3.0, 7.0); a2(20.0), a3(3.0, 7.0);a1.Print(); a1.Print(); a1.Print(); a1.Print(); a2.Print(); a2.Print(); a2.Print(); a2.Print();a3.Print(); a3.Print(); a3.Print(); a3.Print(); 0 0

10、 0 00 0 0 020202020101010103 3 3 37 7 7 7带缺省参数的构造函数带缺省参数的构造函数不带参数的构造函数不带参数的构造函数每一个对象必每一个对象必 须要有相应的须要有相应的 构造函数构造函数每一个对象必须要有相应的构造函数每一个对象必须要有相应的构造函数若没有显式定义构造函数,若没有显式定义构造函数, 系统默认缺省的构造函数。系统默认缺省的构造函数。class Aclass Aclass Aclass A float x,y;float x,y;float x,y;float x,y; public:public:public:public: A() A()

11、 A() A() void Print(void) void Print(void) void Print(void) void Print(void) coutxtyendl; coutxtyendl; coutxtyendl; coutxtyendl; ; ; ; ;隐含的缺省的构造函数隐含的缺省的构造函数A a1, a2;A a1, a2;A a1, a2;A a1, a2;只允许这样定义对象只允许这样定义对象对象开辟了空间,但没有初始化对象开辟了空间,但没有初始化对局部对象,静态对象,全局对象的初始化对局部对象,静态对象,全局对象的初始化 对于局部对象,每次定义对象时,都要调用对于局部

12、对象,每次定义对象时,都要调用 构造函数。构造函数。对于静态对象,是在首次定义对象时,调用对于静态对象,是在首次定义对象时,调用 构造函数的,且由于对象一直存在,构造函数的,且由于对象一直存在,只调用只调用 一次构造函数一次构造函数。对于全局对象,是对于全局对象,是在在mainmainmainmain函数执行之前调用函数执行之前调用 构造函数的构造函数的。class Aclass Aclass Aclass A int x,y; int x,y; int x,y; int x,y;public: public: public: public:A(int a) x=a; coutA(int a)

13、 x=a; coutA(int a) x=a; coutA(int a) x=a; cout“ “ “ “1n1n1n1n” ” ” ”; ; ; ;A(int a, int b) x=a,y=b;cout A(int a, int b) x=a,y=b;cout A(int a, int b) x=a,y=b;cout A(int a, int b) x=a,y=b;cout“ “ “ “2n2n2n2n” ” ” ”; ; ; ; ; ; ;A a1(3);A a1(3);A a1(3);A a1(3);void f(void) A b(2,3);void f(void) A b(2,3)

14、;void f(void) A b(2,3);void f(void) A b(2,3);void main(void)void main(void)void main(void)void main(void) A A A A a2(4,5);a2(4,5);a2(4,5);a2(4,5);f(); f(); f(); f(); f(); f(); f(); f(); 1 1 1 12 2 2 22 2 2 22 2 2 2class Aclass Aclass Aclass A float x,y;float x,y;float x,y;float x,y; public:public:public:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号