白嫖党联盟
标题:
C++深拷贝
[打印本页]
作者:
lhh131128
时间:
2023-10-14 20:00
标题:
C++深拷贝
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如:
class
Base
{
public
:
Base
():
m_a
(
0
),
m_b
(
0
)
{
}
Base
(
int
a
,
int
b
):
m_a
(
a
),
m_b
(
b
)
{
}
private
:
int
m_a
;
int
m_b
;
}
;
int
main
()
{
int
a
=
10
;
int
b
=
a
;
//拷贝
Base
obj1
(
10
,
20
);
Base obj2
=
obj1
;
//拷贝
return
0
;
}
b 和 obj2 都是以拷贝的方式初始化的,具体来说,就是将 a 和 obj1 所在内存中的数据按照二进制位(Bit)复制到 b 和 obj2 所在的内存,
这种默认的拷贝行为就是
浅拷贝
,这和调用 memcpy() 函数的效果非常类似
。
对于简单的类,默认的拷贝构造函数一般就够用了,我们也没有必要再显式地定义一个功能类似的拷贝构造函数。但是当类持有其它资源时,例如动态分配的内存、指向其他数据的
指针
等,默认的拷贝构造函数就不能拷贝这些资源了,我们必须显式地定义拷贝构造函数,以完整地拷贝对象的所有数据。
欢迎光临 白嫖党联盟 (http://xiaok.icu/)
Powered by Discuz! X3.4