浅拷贝与深拷贝

Person p1("Boy");

Person p2 = p1;


p1复制给p2,但是资源并未复制,两者指向同一个资源,称之为浅拷贝。

反之,各自拥有自己的资源,称之为深拷贝。



怎么才会共享资源,或独享资源呢?(这里指堆内存吧。。。[img]/images/smiles/icon_cry.gif" alt="[/img]本人也没完全搞懂)



带拷贝功能的构造函数:

Person::Person(Person >amp;p)
{
     this->gt;name = new char[strlen(p.name)+1];
     if (this->gt;name !=0 )
     {
           strcpy(this->gt;name, p.name);
     }
}



深拷贝何时触发?
对象a初始化后,调用自身的初始化函数,就会触发copy函数。

前人总结:如果类需要一个析构函数,那么也需要一个拷贝函数。
自定义析构,说明有额外的资源。。。

你可能感兴趣的:(C++,c,C#)