- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CPP实训5qR
第5章 对象实训
对象是用户使用类定义的一种变量,对象是一种复杂的变量,对象是一个独立的程序实体。本章我们将通过做习题和上机实验,学会怎样定义和使用对象。
5.1 典型习题解答
【例5.1】怎样定义一个对象?它同定义一个变量有何区别?
【解答】定义一个简单对象同定义一个变量类似,其语法结构为:类名 对象名;
例如:Date MyDate,Data;
定义变量的语法结构是:类型名 变量名;例如:int x,y;
【例5.2】什么是构造函数?构造函数有哪些特点?
【解答】构造函数是构造对象的特殊函数,它在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于其它对象的特征。构造函数在对象被创建的时候由系统自动调用。
构造函数也是类的一个成员函数,除了具有一般成员函数的特征之外,还有一些特殊的性质。构造函数的特点如下:
⑴ 构造函数是特殊的成员函数,该函数的名字与类名相同,该函数不能指定返回类型;
⑵ 构造函数可以重载,即可以定义多个参数个数不同或参数类型不同的构造函数;
⑶ 构造函数在定义对象时被直接调用,程序中不能直接调用构造函数。
【例5.3】什么是析构函数?析构函数有哪些特点?
【解答】析构函数是对象的生命期结束时要执行的一段程序,用来完成对象被删除前的一些清理工作。如用析构函数释放动态申请的存储单元。
析构函数的名称和类名相同,在类名前面加上一个波浪号‘~’。析构函数同构造函数一样,不能有任何返回类型,也不能有void类型。析构函数是无参函数,不能重载,一个类只能有一个析构函数。
析构函数的特点如下:
⑴ 析构函数是特殊的成员函数,该函数的名字为波浪号‘~’后面跟着类名,该函数不能指定返回类型,也不能有参数;
⑵ 一个类只能定义一个析构函数;
⑶ 析构函数在对象生命期结束时被系统直接调用,程序中一般不要调用析构函数。
【例5.4】什么是复制构造函数?它有何作用?
【解答】复制构造函数是一个特殊的构造函数,具有一般构造函数的所有特性,它只有一个参数,参数类型是本类对象的引用。其功能应该设计为将已知对象的值复制到正在定义的新的同类型对象。
复制构造函数的一般形式为:类名(类名 对象名);
普通构造函数只在对象创建时被自动调用,而复制构造函数可以在下面三种情况下被自动调用:
⑴ 用老对象定义该类的一个新对象时。
⑵ 如果函数的参数是对象,调用该函数时。
⑶ 返回类型是对象时,执行复制构造函数。
【例5.5】什么是对象的生存期?
【解答】对象从诞生到消亡的这段时间成为对象的生存期。在对象生存期内,其数据成员的值表示对象的状态,对象的状态只有被更新才会改变。
【例5.6】 怎样实现对象之间的相互赋值?
【解答】可以重载赋值运算符‘=’实现对象之间的相互赋值,也可以编制成员函数实现对象之间的相互赋值,还可以重载其它运算符或重载成员函数实现对象之间的相互赋值。
【例5.7】 对象的作用域有何限制?
【解答】对象的作用域同变量的作用域一样,在它所属的最小程序块中用效,也就是说,对象的作用域不能出花括号,但可以进花括号。
【例5.8】 怎样修改对象的数据成员?
【解答】封装是对象的一大优点,封装实现了信息隐藏,增强了系统的可靠性。对象的封装使对象的数据成员成为私有,但是,对象的数据成员常常是需要修改的,一般通过公有成员函数修改对象的数据成员。
【例5.9】 同一个类生成的2个对象有何区别?
【解答】同一个类生成的2个对象必须有不同的对象名;每个对象都有自己的数据属性值,同一个类生成的2个对象可以有不同的属性值。
【例5.10】关键字this有什么作用?
【解答】this是C++的关键字,表示‘自己’,指向自己对象的首地址。
【例5.11】 分析下列程序的功能:
class A { int x,y;
public:
A();
A(int);
A(int,int);
A(A );
void Display();
void Set(int,int);
~A();
};
A::A()
{ cout执行无参构造函数:;
x=0; y=0;
coutx=x, y=yendl;
}
A::A(int a)
{ cout执行一个参数构造函数:;
x=a; y=0;
coutx=x, y=yendl;
}
A::A(int a,int b)
{ cout执行二个参数构造函数:;
x=a; y=b;
coutx=x, y=yendl;
}
A::A(A a)
{ cout执行复制参数构造函数:;
x=a.x; y=a.y;
coutx=x, y=yendl;
}
void A::Display()
{ cout执行显示
原创力文档


文档评论(0)