- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于类和对象的进一步讨论1(构造函数和析构函数)
第9章 关于类和对象的进一步讨论
(构造函数和析构函数);构造函数和析构函数是在类体中说明的两种特殊的成员函数。;构造函数是类的成员函数,系统约定构造函数名必须与类名相同。构造函数提供了初始化对象的一种简单的方法。在建立对象时自动执行构造函数,它的作用是对该对象中的各数据成员赋初值。;class A{
float x,y;
public:
A(float a,float b){ x=a; y=b;}//构造函数,初始化对象
float Sum(void) { return x+y; }
void Set(float a,float b) { x=a; y=b;}
Print(void) { coutx=x\ty=yendl;}
};
void main(void)
{ A a1(2.0, 3.0);//定义时调用构造函数初始化
A a2(1.0,2.0);
a2.Set(10.0, 20.0); //利用成员函数重新为对象赋值
a1.Print(); a2.Print();
}//构造函数不需用户调用,也不能被用户调用,因此无法采用常规的调用函数的
//方法给出实参。实参是在定义对象时给出的。
;对构造函数,说明以下几点:
1.构造函数的函数名必须与类名相同。构造函数的主要作用是完成初始化对象的数据成员以及其它的初始化工作。
2. 在定义构造函数时,不能指定函数返回值的类型,也不能指定为void类型。
3. 一个类可以定义若干个构造函数。当定义多个构造函数时,必须满足函数重载的原则。
;5.若定义的类要说明该类的对象时,构造函数必须是公有的成员函数。如果定义的类仅用于派生其它类时,则可将构造函数定义为保护的成员函数。
6.在构造函数体中不仅可以对数据成员赋初值,而且可以包含其他语句,例如cout语句。
7.如果用户没有定义构造函数,则c++系统会自动生成一个构造函数,只是这个构造函数体式空的,也没有参数,不执行初始化操作。;class A{
float x,y;
public:
A(float a, float b=10) { x=a; y=b; }
A() { x=0; y=0;}
void Print(void) { coutx\tyendl; }
};
void main(void)
{ A a1, a2(20.0), a3(3.0, 7.0);
a1.Print();
a2.Print();
a3.Print();
} ;每一个对象必须要有相应的构造函数;对局部对象,静态对象,全局对象的初始化
对于局部对象,每次定义对象时,都要调用构造函数。
对于静态对象,是在首次定义对象时,调用构造函数的,且由于对象一直存在,只调用一次构造函数。
对于全局对象,是在main函数执行之前调用构造函数的。;class A
{ int x,y;
public:
A(int a){ x=a; cout“1\n”;}
A(int a, int b) { x=a,y=b;cout“2\n”;}
};
A a1(3);
void f(void) { A b(2,3);}
void main(void)
{ A a2(4,5);
f(); f();
};class A{
float x,y;
public:
A(float a, float b){x=a;y=b;cout初始化自动局部对象\n;}
A(){ x=0; y=0; cout初始化静态局部对象\n;}
A(float a){ x=a; y=0; cout初始化全局对象\n; }
void Print(void){ coutx\tyendl; }
};
A a0(100.0);//定义全局对象
void f(void)
{ cout 进入f()函数\n; A a2(1,2);
static A a3; //初始化局部静态对象
}
void main(void)
{ cout进入main函数\n;
A a1(3.0, 7.0);//定义局部自动对象
f(); f(); };缺省的构造函数 ;class A{
float x,y;
public:
A(){ }//缺省的构造函数,编译器自动产生,可以不写
float Sum(void) { return x+y; }
void Set(float a,float b) { x=a; y=
您可能关注的文档
最近下载
- 微波技术(北航)中国大学MOOC慕课 章节测验 客观题答案.docx
- 九洲集团民品科技发展规划(2010-2015).pdf
- JJF(机械) 1032-2019 轴承跳动测量仪校准规范.docx VIP
- (人教PEP版2024)英语六年级上册Unit5 大单元项目化教学设计.docx
- 人教版(2024)美术一年级上册《看我七十二变》教学设计.docx
- 初中常用英语单词分类表word版本.doc VIP
- 房地产 -霸州市贾庄旧城改造永正·星城二期项目修建性详细规划设计方案.docx
- 红色经典话剧剧本.doc
- 国开电大 《JavaScript程序设计》(版本2) 形考实训二:显示数据列表.pdf VIP
- 电器与照明系统课件.pptx VIP
文档评论(0)