- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲 对象的赋值和复制赋值运算符 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)
您可能关注的文档
- 2.1坚强面对生活.ppt
- 湘教4年级 3纸品乐陶陶.ppt
- 第十一讲商务仪式礼仪.ppt
- 房地产项目经济测算完全解析.ppt
- 朱华莲:燕子妈妈笑了 (1).ppt
- 飞向蓝天的恐龙一课时.ppt
- 人员位置服务与管理系统.ppt
- 滢水民乐水库项目营销部分.ppt
- 湘教5年级2彩云衣2.ppt
- 优美的课件模版.ppt
- 关于CAT工具对国内职业译员影响的探究.pdf
- 大学生外语学习无聊情绪、外语学习动机和外语学习成绩的关系探究.pdf
- 山西汾阳方言语音专题研究.pdf
- 英汉酒店负面评论中不礼貌策略的对比研究.pdf
- 纽马克交际翻译理论指导下《哈萨克斯坦2021年夏季经济报告》翻译实践报告.pdf
- 小学英语教师云教研共同体研修现状及改进策略研究——以X名师工作室为例.pdf
- 《美国印第安人的故事》中的文化记忆研究.pdf
- 初中生动机调控策略与英语自主学习能力的相关性研究.pdf
- 诺德功能翻译理论指导下国际检索单位书面意见汉英翻译实践报告.pdf
- 性别空间与身份探寻——莱辛小说《天黑前的夏天》的女性主义地理学解读.pdf
文档评论(0)