复制粘贴之外,你了解深拷贝和浅拷贝的区别吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2902个文字,预计阅读时间需要12分钟。
C++中默认成员函数的复制赋值:
C++默认为类成员函数提供复制赋值操作,包括复制构造函数和复制赋值运算符。这些默认操作通常使用浅拷贝和深拷贝来实现。
1. 复制构造函数和复制赋值运算符的默认实现: - 默认复制构造函数和复制赋值运算符会进行浅拷贝,即复制对象的成员变量,但不复制指向资源的指针。
2. 深拷贝的实现: - 若类中包含指向资源的指针,如动态分配的内存,则需要重写复制构造函数和复制赋值运算符,实现深拷贝。
3. 重载复制构造函数和复制赋值运算符: - 复制构造函数:只有一个形参,类型为类类型。 - 复制赋值运算符:只有一个形参,类型为类类型。
示例代码:
cppclass MyClass {public: int* data;
// 默认复制构造函数 MyClass(const MyClass& other) { data=new int; *data=*other.data; }
// 默认复制赋值运算符 MyClass& operator=(const MyClass& other) { if (this !=&other) { int* newData=new int; *newData=*other.data; delete data; data=newData; } return *this; }};
类中有6大默认成员函数
本文将详细介绍C++默认成员函数的拷贝赋值,拷贝构造分为浅拷贝和深拷贝。还有拷贝构造的重载。
本文共计2902个文字,预计阅读时间需要12分钟。
C++中默认成员函数的复制赋值:
C++默认为类成员函数提供复制赋值操作,包括复制构造函数和复制赋值运算符。这些默认操作通常使用浅拷贝和深拷贝来实现。
1. 复制构造函数和复制赋值运算符的默认实现: - 默认复制构造函数和复制赋值运算符会进行浅拷贝,即复制对象的成员变量,但不复制指向资源的指针。
2. 深拷贝的实现: - 若类中包含指向资源的指针,如动态分配的内存,则需要重写复制构造函数和复制赋值运算符,实现深拷贝。
3. 重载复制构造函数和复制赋值运算符: - 复制构造函数:只有一个形参,类型为类类型。 - 复制赋值运算符:只有一个形参,类型为类类型。
示例代码:
cppclass MyClass {public: int* data;
// 默认复制构造函数 MyClass(const MyClass& other) { data=new int; *data=*other.data; }
// 默认复制赋值运算符 MyClass& operator=(const MyClass& other) { if (this !=&other) { int* newData=new int; *newData=*other.data; delete data; data=newData; } return *this; }};
类中有6大默认成员函数
本文将详细介绍C++默认成员函数的拷贝赋值,拷贝构造分为浅拷贝和深拷贝。还有拷贝构造的重载。

