- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造函数与析构函数 不能直接在定义类时给数据成员初始化 构造函数----给对象进行初始化 的更强和更一般的方法 几种构造函数 定义构造函数 构造函数和运算符new 复制初始化构造函数 析构函数 对象数组析构 delete 缺省析构函数 全局对象或静态对象的构造函数和析构函数 构造函数类型转换 对象的初始化(1) 对象的初始化(2) 对象赋值 对象赋值 对象成员(1) 对象成员(2) 对象成员(3) 小结(1) 小结(2) (1)建立对象时,可在对象名之后的括号内给出对象的初始值; 如 Test Try( 5 ); (2)也可以使用等号在说明语句中进行初始化,强制转换 Test Try1=5; Test Try2=Test(10); 编译器将它们解释为: Test Try1(5); Test Try2(10); (3)对于没有定义复制初始化构造函数的类,C++编译器会自动建立一个缺省复制初始化构造函数:用作为初始值的对象的成员初始化正建立的对象的相应成员。但会带来一些问题,见课本P49。 因此程序员应定义自己的复制初始化构造函数: string : string ( string a ) { strcpy (str, a.str); } (见课本P50[例3.7]) 对象的初始化例[1]类定义 class string{ private: char * str; public: string( char *s) { str = new char[strlen(s)+1]; strcpy( str, s); } void print( ) { coutstrendl;} ~string( ) { cout“Delete”endl; delete str;} } 对象的初始化例[1]使用类 void main( ) { string s1=“hello”; string s2=“world”; s1.print( ); s2.print( ); } //带来的问题:图示P50 对象的初始化例[1]类定义修改 class string{ private: char * str; public: string :string( string a) { str = new char[strlen(a.str)+1]; strcpy( str, a.str); } void print( ) { coutstrendl;} ~string( ) { cout“Delete”endl; delete str;} } string( char *s) 修改原定义 (1)编译器在缺省情况下为每个类生成一个缺省的赋值操作,用于同类的两个对象之间相互赋值。缺省的含义是逐成员赋值,即将一个数据成员的值赋给另一个对象的数据成员。 //MyClass.cpp #include iostream.h class MyClass{ int a, b; public: void set( int i, int j ) { a=i; b=j; } void show( ) {coutabendl;} }; 运行结果: 10 4 例:简单的对象赋值 10 4 void main( ) { MyClass o1,o2; o1.set(10, 4); o2=o1; o1.show( ); o2.show( ); } 对象赋值的潜在问题 编译器在缺省情况下为每个类生成一个缺省的赋值操作,用于同类的两个对象之间相互赋值。缺省的含义是逐成员赋值,即将一个数据成员的值赋给另一个对象的数据成员。但有时会带来一些问题: # include “string.h” void main( ) { string s1(“hello”), s2(“world”); s2=s1; } //问题:图示P53 对象赋值 //为string类定义自己的赋值操作的例子 string string
您可能关注的文档
- 营养评估及人体成分分析解析.ppt
- 虚函数与多态性.ppt
- VC1010电子邮件客户应用程序的设计与实现2.doc
- 虾蟹养殖学(第3章).ppt
- VC3004MD5算法的研究与实现-数据存储加密2.doc
- 融资租赁业务(培训用).ppt
- gann原着自然阻力水平和时间周期点.doc
- 融资租赁简史.ppt
- VC60动态生成Word表格实例.doc
- vc60++图文详细使用教程.doc
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)