C++第9章2章节.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.8 对象的赋值和复制 9.8.1 对象的赋值 一般形式为: 对象名1 = 对象名2; 例如 Student stud1,stud2; // 定义两个同类的对象 ┆ stud2=stud1; // 将stud1赋给stud2 9.8.2 对象的复制 一般形式为 类名 对象2(对象1); 如:Box box2(box1); 其作用是用已有的对象box1去克隆出一个新对象box2。 Box f( ) //函数f的类型为Box类类型 { Box box1(12,15,18); return box1; // 返回值是Box类的对象 } int main(void) { Box box2; box2=f( ); return 0; } 9.10 友元 9.10.1 友元函数 关于提前引用 9.10.2 友元类 友元利弊: 友元可以访问其他类中的私有成员,是对封装原则的一个小的破坏。 有助于数据共享,能提高程序的效率 不要过多地使用友元! 9.11 类模板 用类来定义对象的方法: Compare_int cmp1(4,7); // Compare_int是已声明的类 用类模板定义对象的方法: Compare int cmp(4,7); // Compare是类模板名 例9.14 声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。 附加说明: 上面列出的类模板中的成员函数是在类模板内定义的。如果改为在类模板外定义,不能用一般定义类成员函数的形式: numtype Compare∷max( ) {…} 而应当对应类模板的形式书写: templateclass numtype numtype Comparenumtype∷max( ) {return (xy)?x:y;} 声明和使用类模板的方法归纳: (1) 先写出一个实际的类。 (2) 将此类中准备改变的类型名(如:int)改用一个自己指定的虚拟类型名(如:numtype)。 (3) 在类声明前面加入一行,格式为 templateclass 虚拟类型参数,如 templateclass numtype class Compare {…};// 类体 (4) 用类模板定义对象时用以下形式: 类模板名实际类型名 对象名; 类模板名实际类型名 对象名(实参表列); 如 Compareint cmp; Compareint cmp(3,7); (5) 若在类模板外定义成员函数,应写成类模板形式: templateclass 虚拟类型参数 函数类型 类模板名虚拟类型参数∷成员函数名(函数形参表列) {…} Thanks! 注意:对象名1和对象名2必须属于同一个类 注1:对象的赋值只对其中的数据成员赋值,不对成员函数赋值 注2:类的数据成员中不能包括动态分配的数据 用对象1复制出对象2。 参数是对象 在建立对象时调用一个特殊的构造函数——复制构造函数(拷贝构造函数copy constructor)。这个函数的形式是: 只有一个参数,这个参数是本类的对象,且采用对象的引用,一般约定加const声明。 复制对象的语句: Box box2(box1); 建立一个新对象box2,调用复制构造函数,将box1对象中各数据成员的值赋给box2中各数据成员 对象复制的另外一种形式为: 类名 对象名2= 对象名1; 如: Box box2=box1; // 用box1初始化box2 可以在一个语句中进行多个对象的复制。如 Box box2=box1,box3=box2; //按box1来复制box2和box3 int a=4,b=a; //与变量初始化语句类似 用对象1复制出对象2 对象的赋值 对象的复制 -- 克隆 复印 本身存在 本身不存在 对象的赋值是对一个已经存在的对象赋值,因此必须先定义被赋值的对象,才能进行赋值。 对象的复制则是从无到有地建立一个新对象,并使它与一个已有的对象完全相同(包括对象的结构和成员的值)。 注意普通构造函数和复制构造函数的区别: (1) 在形式上 类名(形参表列); // 普通构造函数的声明,如Box(int h,int w,int len); 类名(类名 对象名); // 复制构造函数的声明,如Box(Box b); (2) 在建立对象时,实参类型不同。如 Box box1(12,15,16); // 实参为整数,调用普通构造函数 Box box2(box1); // 实参是对象名,调用复制构造函数 (

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档