补充C++2_构造函数与析构函数B.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

kabudou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档