第六周项目1:深复制体验

来源:互联网 发布:linux文件与格式结构 编辑:程序博客网 时间:2024/05/12 04:53

问题及代码:

#include<iostream>#include<cstring>using namespace std;class A{private:    char *a;public:    A(char *aa)    {        a = new char[strlen(aa)+1];  //(a)这样处理的意义在于:为指针分配指向的内存空间,+1是因为字符串结束时最后一个空间保存 \0        strcpy(a, aa);  //(b)数据成员a与形式参数aa的关系:把aa所指向的字符串复制到a指向的内存空间    }    ~A()    {        delete []a;   //(c)这样处理的意义在于:释放a所指向的内存空间,避免不必要的空间浪费    }    void output()    {        cout<<a<<endl;    }};int main(){    A a("good morning, code monkeys!");    a.output();    A b("good afternoon, codes!");    b.output();    return 0;}


运行结果:

知识点总结:

深复制,为指针类型的成员分配专门的空间避免浅复制时野指针造成的潜在bug

0 0
原创粉丝点击