第九周项目1 深复制体验(1)

/*     
 *Copyright(c) 2016,烟台大学计算机学院     
 *All rights reserved.     
 *作    者:刘金石     
 *完成日期:2016年4月22日     
 *版本  号:v1.0     
 *问题描述: 深复制体验  
*/  
#include<iostream>
#include<cstring>
using namespace std;
class A
{
private:
    char *a;
public:
    A(char *aa)
    {
        a=new char[strlen(aa)+1];//(a)这样处理的意义在于根据需要分配内存大小,避免内存浪费
        strcpy(a,aa);//(b)数据成员a与形参aa的关系是aa所指向的字符串复制给a
    }
    ~A()
    {
        delete[]a;//(c)这样处理的意义在于释放内存减少浪费
    }
    void output(){cout<<a<<endl;}
};
int main()
{
    A a("Good morning,code monkeys!");
    a.output();
    A b("Good afternoon,codes!");
    b.output();
    return 0;
}

运行结果:

第九周项目1 深复制体验(1)_第1张图片

学习心得:

               所谓深复制就是当数据成员中有指针时在构造函数中为指针分配内存。注释a中动态分配内存时后面加1,因为在strlen检测的是字符串的长度,而实际字符串再存储时最后一位为空字符,所以要加一。如果换成数据则不需加1.

 
 
 
 

你可能感兴趣的:(C++,函数,对象,Class,设计)