下面是一个使用C++的类实现深拷贝的例子:

#include <iostream>

class Array {
private:
    int* data;
    int size;
public:
    // 构造函数
    Array(int sz) {
        size = sz;
        data = new int[size];
    }

    // 拷贝构造函数
    Array(const Array& other) {
        size = other.size;
        data = new int[size];
        for (int i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
    }

    // 赋值运算符重载
    Array& operator=(const Array& other) {
        if (this == &other) {
            return *this;
        }
        delete[] data;
        size = other.size;
        data = new int[size];
        for (int i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
        return *this;
    }

    // 修改数组元素的函数
    void setValue(int index, int value) {
        if (index >= 0 && index < size) {
            data[index] = value;
        }
    }

    // 打印数组元素的函数
    void print() {
        for (int i = 0; i < size; i++) {
            std::cout << data[i] << ' '; 
        }
        std::cout << std::endl;
    }

    // 析构函数
    ~Array() {
        delete[] data;
    }
};

int main() {
    Array arr1(5);  // 创建一个数组对象
    arr1.setValue(0, 1);
    arr1.setValue(1, 2);
    arr1.setValue(2, 3);
    arr1.setValue(3, 4);
    arr1.setValue(4, 5);
    std::cout << "arr1: ";
    arr1.print();

    Array arr2 = arr1;  // 使用拷贝构造函数进行深拷贝
    std::cout << "arr2: ";
    arr2.print();

    arr2.setValue(0, 10);  // 修改arr2的元素值
    std::cout << "arr1: ";
    arr1.print();  // arr1的元素值不受arr2修改的影响

    return 0;
}

在这个例子中,我们定义了一个Array类,包含一个整型指针data和一个整型变量size,用于表示一个动态分配的整型数组。在类中,我们实现了构造函数、拷贝构造函数、赋值运算符重载、修改数组元素的函数和打印数组元素的函数。

在主函数中,我们首先创建一个Array对象arr1,然后给arr1的元素赋值。然后,我们使用拷贝构造函数将arr1深拷贝到arr2。接着,我们修改arr2的第一个元素的值,并打印arr1和arr2的元素。可以看到,arr2的修改不会影响到arr1,说明这是一个深拷贝。

C++ 深拷贝示例:使用类实现数组的深拷贝

原文地址: https://www.cveoy.top/t/topic/oOm0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录