学时类与对象对象的赋值和复制

学时类与对象对象的赋值和复制

ID:39337237

大小:387.00 KB

页数:21页

时间:2019-07-01

学时类与对象对象的赋值和复制_第1页
学时类与对象对象的赋值和复制_第2页
学时类与对象对象的赋值和复制_第3页
学时类与对象对象的赋值和复制_第4页
学时类与对象对象的赋值和复制_第5页
资源描述:

《学时类与对象对象的赋值和复制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第六讲对象的赋值和复制2对象的赋值和复制对象的赋值同一类的两个对象可以相互赋值,即不同对象的成员分别复制。通过=运算符的重载实现。对象1=对象2;注意:对象的赋值只对其中的数据成员赋值,而不复制成员函数。类的数据成员中不能包括动态分配的数据!Boxbox1(12,13,14),box2;box2=box1;3拷贝构造函数用一个已有同类对象的数据对正在建立的对象进行数据初始化.C++为类提供默认版本的拷贝构造函数程序员可以定义用户版本的拷贝构造函数对象的赋值和复制语法形式类名::类名(const类名&引用名);Const可以不写,&必须写对象的复制Boxbox1(12

2、,13,14);Boxbox2=box1;4默认复制(拷贝)构造函数classAtype{private:inta;public:Set(inti){a=i};Print(){cout<

3、t)//创建对象b,调用A(constA&)Ab(a);Ac=b;调用拷贝构造函数的两种典型方法6默认拷贝构造函数对于类来说,拷贝构造函数是必须的;没有定义,则生成默认的拷贝构造函数内置在类中;默认拷贝构造函数是单参数的,而且参数是同属一类的对象;默认拷贝构造函数可以被重载.7拷贝构造函数Aa;Ab=a;//调用拷贝构造函数Ac(a);//调用拷贝构造函数重载拷贝构造函数拷贝构造函数的参数必须为引用参数8拷贝构造函数的执行用已有对象初始化创建对象。当对象作函数参数时,因为要用实参初始化形参,也要调用拷贝构造函数。对象引用调用——不会调用构造函数和析构函数。函数返回对象

4、返回一个临时对象,这样调用一次临时对象的析构函数赋值不可以9classBox{public:Box();Box(constBox&);voidset(int,int,int);doublevolumn();private:floatlength;floatwidth;floathighth;};调用拷贝构造函数的时机Box::Box(constBox&b){cout<<"Copyconstructor."<

5、shoesBox;Boxb2(b1);}代码模拟10classBox{public:Box();Box(constBox&);voidset(int,int,int);doublevolumn();private:floatlength;floatwidth;floathighth;};调用拷贝构造函数的时机voidtest(Boxb){cout<<“testfuction:"<

6、示的堆时,默认拷贝构造函数仅作指针值复制,需显式定义拷贝构造函数。拷贝构造函数12//一个有问题的程序#include#includeclassname{public:name(char*pn);~name();private:char*pname;intsize;//包含字符的数目};浅复制和深复制代码练习,程序探讨13浅复制和深复制name::name(char*pn){cout<<"Constructing"<

7、y(pname,pn);size=strlen(pn);}name::~name(){cout<<"Destructing"<#includeclassname{public:name(char*pn);~name();private:char*pname;intsize;};浅复制和深复制voidmain(){nameObj1("NoName");nameObj2=Obj1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。