1. 浅拷贝

浅拷贝是指在拷贝过程中只是拷贝对象的值,而不复制对象本身,也就是拷贝的是指针,而不是拷贝对象的内容。在C++中,浅拷贝可以通过赋值操作来实现,例如:


int a = 10; 
int b = a; 

这里,a和b的值都是10,但它们是两个不同的变量,它们的地址也不相同,这就是浅拷贝的结果。

2. 深拷贝

深拷贝是指在拷贝过程中,不仅拷贝对象的值,还拷贝整个对象,也就是拷贝的是对象的内容,而不是指针。在C++中,深拷贝可以通过拷贝构造函数来实现,例如:


class A
{
public:
    A(int _a):a(_a){}
    A(const A& rhs)
    {
        a = rhs.a;
    }
private:
    int a;
};
A a(10); 
A b(a); 

这里,a和b的值都是10,而且它们是两个不同的变量,它们的地址也不相同,这就是深拷贝的结果。

3. 动态内存拷贝

动态内存拷贝是指在拷贝过程中,使用动态内存来拷贝对象,例如:


class A
{
public:
    A(int _a):a(_a){}
    A(const A& rhs)
    {
        a = rhs.a;
    }
private:
    int a;
};
A* a = new A(10); 
A* b = new A(*a); 

这里,a和b的值都是10,而且它们是两个不同的变量,它们的地址也不相同,这就是动态内存拷贝的结果。