第三章类和对象的进一步讨论(三).pptVIP

第三章类和对象的进一步讨论(三).ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第三章类和对象的进一步讨论(三)

第三章 关于类和对象的进一步讨论 本节要点 对象的动态建立和释放 对象的赋值 对象的复制 类和对象复习 1、根据类模板,用C++语言描述该类; 2、为该类定义三个构造函数,其中一个无参数,第二个有一个字符串参数,第三个有两个参数,均为字符串型; 类和对象复习 1、根据类模板,用C++语言描述该类; 类和对象复习 1、创建程序,测试学生类和班级类的对象. 对象的动态建立和释放 对象指针:指向对象的指针 Student *s; 对象的动态建立 s=new Student; 访问对象成员 s->name=“noname”; 对象的动态释放 delete s; 对象的动态建立和释放 new的两个含义 new的调用,将创建一个新对象 new是函数调用,其返回值是新建对象的内存地址 对象的动态建立和释放 delete的两个含义 delete删除指针关联的对象 delete并不删除指针变量 对象的赋值 一般成员变量的赋值 例: 一般成员的复制 对象的赋值 指针对象的复制:复制指针地址 指针对象的复制 对象的赋值说明 对象的赋值只对其中的数据成员赋值,而不对成员函数赋值。 类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现严重后果。 对象的复制 对象的复制利用复制构造函数(copy constructor,也叫拷贝构造函数)进行。 复制构造函数形式: 例: Box::Box(Box &b) { height=b.height; width=b.width; length=b.length; } 复制构造函数 定义:在一个类声明中,以类类型本身作为形式参数且参数传递方式为按引用调用的构造函数。 特殊功能:将参数代表的对象逐域的拷贝到新创建的对象中。 形如: class A{ public: A( A& obj);//复制构造函数 }; 例:复制构造函数 #include <iostream.h> class point{ int x,y; public: point(int vx,int vy){x=vx;y=vy;} void print(){ cout<<x<<" "<<y<<endl;} }; main() { point p1(10,20); point p2(p1);//虽然未定义复制构造函数,但系统会根据需要自动产生 p1.print(); p2.print(); return 1; } 例:复制构造函数 #include <iostream.h> class point{ int x,y; public: point(int vx,int vy){x=vx;y=vy;} void print(){ cout<<x<<" "<<y<<endl;} //复制构造函数 point(point & obj) {//请注意复制构造函数的主要功能 x=obj.x; y=obj.y; cout<<"this is copy constructor "<<endl; } }; 课堂练习 为以下类写一个复制构造函数: class A{ public: int age; char * name; }; 以下情形会调用复制构造函数 1、声明对象时使用另一个对象来初始化; 如:A obj; A obj_b=obj; 2、对象作为函数参数时; 3、对象作为函数的返回值时。 例如: A func(A obj)//A类型对象作为参数 { A temp; return temp; //A类型对象作为参数 } 例 #include <iostream.h> class A{ public: A() { cout<<"consturctor"<<endl; } A(A &obj) { cout<<"copy constructor of A"<<endl; } }; int square(A x) { cout<<"square A"<<endl; return 0; } 课后习题 1、说明何时复制构造函数会被调用? 2、为班级类定义一个复制构造函数。 * * c++面向对象程序设计 类名:学生 属性: 学号 姓名 专业 行为: 报名 类名:班级 属性: 名称 学生 行为: 增加学生 删除学生 #include <iostream> #include <string> using namespace std; class TClass { public: string classname; }; int main() { TCla

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

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

认证主体刘**

1亿VIP精品文档

相关文档

相关课程推荐