C++中的位拷贝和值拷贝 - liam1122(小亮)的专栏 - CSDN博客
来源:百度文库 编辑:神马文学网 时间:2024/05/03 18:06:45
为了便于说明我们以String类为例:首先定义String类,而并不实现其成员函数。
Class String{
public:
String(const char *ch=NULL);//默认构造函数
String(const String &str);//拷贝构造函数
~String(void);
String &operator=(const String &str);//赋值函数
private:
char *m_data;
};
位拷贝拷贝的是地址,而值拷贝则拷贝的是内容。如果定义两个String对象A和B。A.m_data和B.m_data分别指向一段区域,A.m_data="windows",B.m_data=“linux";
如果未重写赋值函数,将B赋给A;则编译器会默认进行位拷贝,A.m_data=B.m_data
则A.m_data和B.m_data指向同一块区域,虽然A.m_data指向的内容会改变成"linux",但是这样容易出现这些问题:(1):A.m_data原来指向的内存区域未释放,造成内存泄露。(2):A.m_data和B.m_data指向同一块区域,任何一方改变都会影响另一方 (3):当对象被析构时,B.m_data被释放两次。对于编译器,如果不主动编写拷贝函数和赋值函数,它会以“位拷贝”的方式自动生成缺省的函数。如果重写赋值函数和拷贝构造函数后,A.m_data=B.m_data,进行的是值拷贝,会将B.m_data的内容赋给A.m_data,A.m_data还是指向原来的内存区域,但是其内容改变。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liam1122/archive/2007/12/25/1966617.aspx
Class String{
public:
String(const char *ch=NULL);//默认构造函数
String(const String &str);//拷贝构造函数
~String(void);
String &operator=(const String &str);//赋值函数
private:
char *m_data;
};
位拷贝拷贝的是地址,而值拷贝则拷贝的是内容。如果定义两个String对象A和B。A.m_data和B.m_data分别指向一段区域,A.m_data="windows",B.m_data=“linux";
如果未重写赋值函数,将B赋给A;则编译器会默认进行位拷贝,A.m_data=B.m_data
则A.m_data和B.m_data指向同一块区域,虽然A.m_data指向的内容会改变成"linux",但是这样容易出现这些问题:(1):A.m_data原来指向的内存区域未释放,造成内存泄露。(2):A.m_data和B.m_data指向同一块区域,任何一方改变都会影响另一方 (3):当对象被析构时,B.m_data被释放两次。对于编译器,如果不主动编写拷贝函数和赋值函数,它会以“位拷贝”的方式自动生成缺省的函数。如果重写赋值函数和拷贝构造函数后,A.m_data=B.m_data,进行的是值拷贝,会将B.m_data的内容赋给A.m_data,A.m_data还是指向原来的内存区域,但是其内容改变。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liam1122/archive/2007/12/25/1966617.aspx
C++中的位拷贝和值拷贝 - liam1122(小亮)的专栏 - CSDN博客
探讨C 中对象的“浅拷贝”与“深拷贝” - Chris_Magic的学习笔记 - CSDN博客
C 类对象的复制-拷贝构造函数(深拷贝,浅拷贝
拷贝动画小技巧
拷贝动画小技巧
C下内存拷贝问题
java的深拷贝
个人修养(拷贝)
我所理解的拷贝构造函数和赋值函数 -- 业余空间 -- 编程爱好者博客
C语言宏的学习: - henry19850318的专栏 - CSDN博客
C语言宏的学习: - henry19850318的专栏 - CSDN博客
异常处理 - [C++] - guomei的专栏 - CSDN博客
C Recommend Book List - ehui928的专栏 - CSDN博客
C语言字符串函数大全 - amossavez的专栏 - CSDN博客
javacard mask.c 文件结构 - tccth4091的专栏 - CSDN博客
JavaScript防止网页拷贝和保存的方法1
如何检测和避免代码中的存储转发冲突 - Duofeng的专栏 - CSDN博客
c语言中串拷贝函数
拷贝成功(代前言).
MFC中的消息映射宏 - magicyang87的专栏 - CSDN博客
windows中的CreatThread - cnctloveyu的专栏 - CSDN博客
浅谈c++中的拷贝构造函数
浅谈c++中的拷贝构造函数
设计自动升级软件 - 小肖的专栏 - CSDN博客