深刻复制 2

来源:互联网 发布:万网买了域名能退吗 编辑:程序博客网 时间:2024/06/05 00:24

  1. *Copyright(c)2016,烟台大学计算机与控制工程学院 
  2.  *All rights reserved 
  3.  *文件名称:123.cpp 
  4.  *作    者:隋宗涛
  5.  *完成日期:2016年5月10日 
  6.  *版 本 号:v1.0 
  7.  * 
  8.  *问题描述:阅读程序,增加复制构造函数 
  9.  *输入描述: 
  10.  *程序输出: 
  11. */  
  12. #include<iostream>  
  13. #include<cstring>  
  14. using namespace std;  
  15. class A  
  16. {  
  17. private:  
  18.     char *a;  
  19. public:  
  20.     A(char *aa)  
  21.     {  
  22.         a = new char[strlen(aa)+1];   //这样处理的意义在于可以不浪费内存空间,节省许多系统单元  
  23.         strcpy(a, aa);     //数据成员a与形式参数aa的关系是a与aa同为指针数组,系统分配的内存空间相同  
  24.     }  
  25.     A(A &b)  
  26.         {  
  27.             a=new char[strlen(b.a)+1];  
  28.             strcpy(a,b.a);  
  29.         }  
  30.     ~A()  
  31.     {  
  32.         delete []a;      //这样处理的意义在于可以释放指针所指向的内存空间,否则会导致动态分配的内存  
  33.     }                    //无法回收,使得程序所占的内存越来越大  
  34.     void output() { cout<<a<<endl; }  
  35. };  
  36. int main(){  
  37.     A a("good morning, code monkeys!");  
  38.     a.output();  
  39.     A b(a);  
  40.     b.output();  
  41.     return 0;  
  42. }  
运行结果:

0 0