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

/*
 *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(const A &p)
    {
        a=new char[strlen(p.a)+1];
        strcpy(a,p.a);
    }
    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(a);
    b.output();
    return 0;
}

运行结果:

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

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