学时类与对象对象的赋值和复制.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文档。上传文档
查看更多
学时类与对象对象的赋值和复制

* 第六讲 对象的赋值和复制 * 对象的赋值和复制 对象的赋值 同一类的两个对象可以相互赋值,即不同对象的成员分别复制。通过 = 运算符的重载实现。 对象1 =对象2; 注意: 对象的赋值只对其中的数据成员赋值,而不复制成员函数。 类的数据成员中不能包括动态分配的数据! Box box1(12,13,14), box2; box2 = box1; * 拷贝构造函数用一个已有同类对象的数据 对正在建立的对象进行数据初始化. C++为类提供默认版本的拷贝构造函数 程序员可以定义用户版本的拷贝构造函数 对象的赋值和复制 语法形式 类名 :: 类名(const 类名 引用名); Const可以不写,必须写 对象的复制 Box box1(12,13,14); Box box2 = box1; * 默认复制(拷贝)构造函数 class Atype { private: int a; public: Set(int i) { a = i }; Print() { couta; } }; void main() { Atype x; x.Set(10); Atype y=x; //Atype y(x); y.Print(); } 应用默认拷贝构造函数的两种格式 将x对象中的数据成员的值赋给 新定义的对象y中的对应的数据成员。 * class A { public : A (int) ; A (const A) ; … } ; … A a (1) ; A b (a) ; A c = b ; 拷贝构造函数 // 拷贝构造函数 // 创建对象 a,调用 A (int) //创建对象 b,调用 A (const A ) A b ( a ); A c = b ; 调用拷贝构造函数的两种典型方法 * 默认拷贝构造函数 对于类来说,拷贝构造函数是必须的; 没有定义,则生成默认的拷贝构造函数内置在类中; 默认拷贝构造函数是单参数的,而且参数是同属一类的对象; 默认拷贝构造函数可以被重载. * 拷贝构造函数 A a; A b=a; //调用拷贝构造函数 A c(a); //调用拷贝构造函数 重载拷贝构造函数 拷贝构造函数的参数必须为引用参数 * 拷贝构造函数的执行 用已有对象初始化创建对象。 当对象作函数参数时,因为要用实参初始化形参,也要调用拷贝构造函数。 对象引用调用——不会调用构造函数和析构函数。 函数返回对象 返回一个临时对象,这样调用一次临时对象的析构函数 赋值不可以 * 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 name { public : na

文档评论(0)

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

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

1亿VIP精品文档

相关文档