第九周实践项目1.2-深复制体验

来源:互联网 发布:淘宝怎么给差评 编辑:程序博客网 时间:2024/05/21 22:48
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作    者:董凯琦 *完成日期:2016年4月28日 *版 本 号:v1.0 * *问题描述:为类A增加复制构造函数。 *程序输入: *程序输出:字符串 */#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);//数据成员a与形式参数aa的关系:公用一块内存    }    ~A()    {        delete[]a;//这样处理的意义在于:释放为a开辟的空间    }     A(A &s)    {        a = new char[strlen(s.a)+1];        strcpy(a,s.a);    }    void output(){cout<<a<<endl;}};int main(){    A a("good morning,code monkeys!");    a.output();    A b(a);    b.output();    return 0;}


运行结果:

 

知识点总结:

从这个程序中,我们进一步了解到了如何进行深复制。即为指针开辟一段存储的空间,不要让它成为“霸道的”野指针,如果对于字符串而言,必须在所在长度上加一。此外,在为类A书写构造函数的时候应该注意,同样要为所需复制构造的函数开辟一段存储空间。

学习心得:

深复制构造函数与普通构造函数类似,不要忘记在.前输入复制对象的名称。即:a=new char[strlen(s.a)+1]。

0 0
原创粉丝点击