网站大量收购闲置独家精品文档,联系QQ:2885784924

第六讲 对象的复制与赋值.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲 对象的赋值和复制 赋值运算符 vs 拷贝构造函数 * Date d1(3 , 30,2010), d2; d2 = d1; //assignment Date d3 = d1; //copy constructor 对象的赋值 assignment 同一类的两个对象可以相互赋值, 即不同对象的成员分别复制。 通过赋值运算符的重载实现。 对象1 = 对象2; Date d1(3,30,2010), d2; d2 = d1; //d2.set(3,30,2010) 注意: 对象的赋值只对其中的数据成员赋值, 而不复制成员函数。 类的数据成员中不能包括动态分配的数据! 复制构造函数用一个已有同类对象的数据 对正在建立的对象进行数据初始化. C++为类提供默认版本的复制构造函数 程序员可以定义用户版本的复制构造函数 对象的复制 copy 语法形式 类名 :: 类名(const 类名 引用名 ); Date d1(3,30,2010); Date d2 = d1; //copy constructor Date d3(d2); // d3(3,30,2010); 默认复制构造函数 class Date { int year, month, day; public: Date(int m, int d, int m); Date(const Date d); set(int m, int d, int m); get() ; }; 将d对象中的数据成员的值赋给 新定义的对象中的对应的数据成员 Date :: Date(const Date d) { year = d.year; month = d.month; day = d.day; } Date d1(3,30,2010); Date d2 = d1; Date d3(d2); 复制构造函数 对于类来说,拷贝构造函数是必须的; 没有定义,则生成默认的拷贝构造函数内置在类中; 默认拷贝构造函数是单参数的, 而且参数是同属一类的对象; 拷贝构造函数可以被重载. 复制构造函数的执行 用已有对象初始化创建对象时; 当对象作函数参数时,要用实参初始化形参对象 对象引用调用 --不会调用构造函数和析构函数 函数返回对象时 返回一个临时对象,这样调用一次临时对象的析构函数 class Box { public : Box( ); Box(const Box); void set(int, int,int); double volumn( ); private: float length; float width; float highth; }; 调用复制构造函数的时机 Box::Box(const Box b ) { coutCopy constructor.endl; length=b.length ; width=b.width ; highth=b.highth; } void main() { Box shoesBox; Box b1 = shoesBox; Box b2(b1); } 代码模拟 class Box {public : Box( ); Box(const Box); void set(int, int,int); double volumn( ); private: float length; float width; float highth; }; 调用复制构造函数的时机 void test (Box b) { cout“ test fuction: endl; } void main() { Box b ( 1, 2 ) ; test ( b ) ; } // 调用复制构造函数 一个带 类参数的函数 默认复制构造函数可以完成对象的数据成员值 简单的复制; 对象的数据资源是由指针指示的堆时, 默认复制构造函数仅作指针值复制, 需显式定义复制构造函数。 复制构造函数 //一个有问题的程序 #includeiostream.h #includestring.h class string { public : string(char *pn)

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档