郑州新站网站推广工具,网址大全百度,wordpress qq登录免费,wordpress吃内存cpu深拷贝 vs. 浅拷贝
深拷贝#xff1a;开辟新内存#xff0c;独立对象#xff0c;堆区浅拷贝#xff1a;共享内存#xff0c;引用对象#xff0c;栈区
深拷贝#xff1a;深拷贝是一种拷贝方式#xff0c;它会在堆区重新分配内存并复制对象的内容。
这意味着原对象和新…深拷贝 vs. 浅拷贝
深拷贝开辟新内存独立对象堆区浅拷贝共享内存引用对象栈区
深拷贝深拷贝是一种拷贝方式它会在堆区重新分配内存并复制对象的内容。
这意味着原对象和新对象是完全独立的对其中一个对象的修改不会影响另一个对象。
通常用于处理动态分配内存的情况如指针指向的数据。浅拷贝浅拷贝是一种拷贝方式它只是简单地复制对象的值或引用。
这意味着原对象和新对象会共享相同的内存对其中一个对象的修改可能会影响另一个对象。
通常用于处理栈上分配的对象如基本数据类型或对象的引用。拷贝构造 又叫显式调用 用于对象初始化和参数传递。语法MyClass(const MyClass other)
示例
MyClass obj1; // 创建第一个对象
MyClass obj2(obj1); // 使用拷贝构造函数创建第二个对象并复制内容运算符重载构造 又叫隐式调用 用于自定义对象赋值行为语法MyClass operator(const MyClass other)
示例
MyClass obj1; // 创建第一个对象
MyClass obj2; // 创建第二个对象obj2 obj1; // 使用运算符重载构造赋值内容explicit 关键字
防止隐式调用
示例
class MyClass {
public:explicit MyClass(int value) {// 构造函数代码}
};MyClass obj(42); // 合法的显式创建对象
// 下面这行将引发编译错误因为没有隐式类型转换
// MyClass obj 42;