资源描述:
《W10 -构造函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、10.1构造函数10.2析构函数10.3拷贝构造函数10.4拷贝函数与对象成员第10章构造函数和析构函数classCrect{intleft,top;public:intright,bottom;voidsetcoord(int,int,int,int);......};上一章的例题中曾提到对象的成员的初始化问题现在再回顾一下在类Crect中共有4个数据成员,其中left,top是私有成员right,bottom是公有成员公有成员可以直接用对象对它们初始化,私有成员的初始化则必须调用公有成员函数,并在函数体中通过访问私有成员来完成第10章构造函数和析构函数voidCrect::
2、setcoord(intL,intR,intT,intB){left=L;right=R;top=T;bottom=B;}classCrect{intleft,top;public:intright,bottom;voidsetcoord(int,int,int,int);......};voidmain(void){Crectr,rr;r.setcoord(100,300,50,200);}这是调用成员函数,可使公有和私有数据成员都被初始化结果使得:left=100right=300top=50bottom=200第10章构造函数和析构函数例如第10章构造函数和析构函数C++
3、数据成员的初始化方法,除上述方法之外,还可以采用我们已知的结构体变量的初始化方法称为列表法(见例题10.1,P218)。Cc1={25,”张三”,{77.8,99.56}};列表法仅可对公有数据成员初始化.此外,C++还提供了专门用作初始化的成员函数————构造函数。而当某个对象的寿命到期时,它还提供了一个用于释放对象所占资源的函数————析构函数。本章将分别介绍这两个函数。第10章构造函数和析构函数10.1构造函数classCrect{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){left=L;right
4、=R;top=T;bottom=B;}.........};现在把上例中4个数据成员都改成私有成员构造函数是类中的一个特殊的成员函数第10章构造函数和析构函数10.1构造函数classCrect{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){left=L;right=R;top=T;bottom=B;}.........};它的特殊性表现为:构造函数没有自己的函数名而是直接用类名当作函数名与其它函数不同,不能为构造函数指定返回值类型和void类型第10章构造函数和析构函数10.1构造函数classCrect
5、{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){left=L;right=R;top=T;bottom=B;}.........};Crect(){left=0;right=0;top=0;bottom=0;}};一个类可以定义一个或多个构造函数,多个构造函数满足函数重载原则。下面看对象如何调用构造函数//不带参数的构造函数第10章构造函数和析构函数10.1构造函数classCrect{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){le
6、ft=L;right=R;top=T;bottom=B;}.........};Crect(){left=0;right=0;top=0;bottom=0;}};voidmain(void){Crectr,rr(10,20,30,40);}定义对象r,并调用无参构造函数结果使得:left=0right=0top=0bottom=0第10章构造函数和析构函数10.1构造函数classCrect{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){left=L;right=R;top=T;bottom=B;}....
7、.....};Crect(){left=0;right=0;top=0;bottom=0;}};voidmain(void){Crectr,rr(10,20,30,40);}定义对象rr,并调用带参构造函数结果使得:left=10right=20top=30bottom=40第10章构造函数和析构函数10.1构造函数classCrect{intleft,top,right,bottom;public:Crect(intL,intR,intT,intB){left=L;right=R;top=