C++ 对象的浅复制

  

1、对象的浅复制

   在C++语言中,同一个类所定义的不同对象之间进行赋值操作时,如果,类中没有定义复制构造函数,

那么,系统就会将属性一个一个地复制给赋值的目标对象,而这个操作就称为(对象的浅复制)。

  当进行了(对象的浅复制)时,如果,类中有分配资源,例如:new操作,或打开文件的,

在释放已分配资源时,只需要对其中一个对象执行一次释放操作就可以了,因为,进行过(浅复制)的对象,

它们所分配的资源所指向的内存空间或文件都是相同的。

 

  而什么是(复制构造函数),将在下一章结合(深复制)为大家进行说明。

 

2、 例子:

       class Human  //定义了人类

       {
           public:
             int head;
             int body;
             int leg;
             int hand;
             int eye;
             int mouse;
             int ear;
             int nose;

             char *name; 

             Human(int a)  //带参数的构造函数

             {

                Age = a;   

                name = new char[50];            

             }  

       };

      

       Human ZS;   //定义了对象ZS

       Human LS;   //定义了对象LS

       ZS = LS;    //同一个类所定义的两个对象进行了赋值 

       void main()

       {

           delete ZS.name; //正确,通过delete释放ZS对象中的name属性所指的内存空间

           delete LS.name; //错误,因为,name所指向的内存空间已经在上一行被释放了

 

不要停留在理论学习上,尽快转到真实环境进行代码编写实践,请下载下方的训练环境。

>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)