- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章节 类和对象(一)
作业题 1. 定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求: (1)构造函数重载; (2)构造函数设置缺省参数; (3)定义一个函数来打印日期; (4)可使用不同的构造函数来创建不同的对象。 作业题 2.编写类string的构造函数,析构函数和拷贝构造函数。 已知类string的原型为: class string { public: string(const char *str = NULL); //普通构造函数 string(const string other); //拷贝构造函数 ~string(void); //析构函数 private: char *m_data; //用于保存字符串 } 第*页 共135页 3.5 对象的生存期 (2)全局对象:当程序开始运行时,调用构造函数,该对象被创建;当程序结束时,调用析构函数,该对象被释放。 (3)静态对象:当程序中定义静态对象时,调用构造函数,该对象被创建;当整个程序被结束时,调用析构函数,对象被释放。 第*页 共135页 3.5 对象的生存期 (4)动态对象:执行new运算符调用构造函数,动态创建该对象;用delete运算符释放对象时,调用析构函数。 可见: (1)局部对象是被定义在一个函数体或程序块内的,它的作用域限定在函数体或程序块内,生存期较短。 第*页 共135页 3.5 对象的生存期 (2)静态对象是被定义在一个文件中,它的作用域从定义时起到文件结束时止。它的生存期较长。 (3)全局对象是被定义在某个文件中,它的作用域包含在该文件的整个程序中,因此它的生存期是最长的。 第*页 共135页 3.5 对象的生存期 (4)动态对象是由程序员掌握的,它的作用域和生存期是由new和delete之间的间隔所决定的。 第*页 共135页 例 3.25 对象的生存期 #include iostream.h #include string.h class A { private: char string[50]; public: A(char *st); ~A( ); }GlobalObject(GlobalObject); //全局对象 第*页 共135页 例 3.25 对象的生存期 A::A(char *st) { strcpy(string,st); coutConstructor called for stringendl; } A::~A( ) { coutDestructor called for stringendl; } 第*页 共135页 例 3.25 对象的生存期 void fun( ) //外部函数 { A FunObject(FunObject); //局部对象 static A staticObject(StatictObject); //静态对象 coutIn fun( ).endl; } 第*页 共135页 例 3.25 对象的生存期 void main( ) { A MainObject(MainObject); //局部对象 A *dy; dy=new A(DynamicObject); //动态对象 coutIn main( ),before calling funendl; fun( ); coutIn main( ),after calling funendl; delete dy; } 第*页 共135页 例 3.17 重载构造函数应用例程 Date::Date( ) { year=1998; month=4; day=28; } Date::Date( int y, int m, int d) { year=y; month=m; day=d; } inline void Date::showDate( ) { coutyear.month.dayendl; } 第*页 共135页 例 3.17 重载构造函数应用例程 void main( ) { Date date1;//声明类Date的对象date1,调用无参数的构造函数 cout“Date1 output:”endl; date1.showDate( ); //调用date1的showDate( ),显示date1的数据 Date date2(2002,11,14);//定义类Date的对象dat
原创力文档


文档评论(0)