第六周 项目一 深复制体验2

来源:互联网 发布:微信支付demo java 编辑:程序博客网 时间:2024/06/15 06:52
/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.*文件名:six week 1.1.app* 作者:柴银平* 完成时间:2015年4月15日* 版本号:v1.0** 问题描述:深复制的体验*程序输入:*程序输出:*/#include<iostream>#include<cstring>using namespace std;class A{private:    char *a;public:    A(char *aa)    {    //(a)这样处理的意义在于:避免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;}


测试图示:

如果不用深复制的话,a会变成野指针,而加1是因为strcpy里复制时会没有'\0';所以需要加1,如果不是指向字符,最好加上1。

0 0