复制粘贴之外,你了解深拷贝和浅拷贝的区别吗?

2026-04-11 22:560阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计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++默认成员函数的拷贝赋值,拷贝构造分为浅拷贝和深拷贝。还有拷贝构造的重载。

阅读全文