深复制体验1

来源:互联网 发布:淘宝杂货店店铺简介 编辑:程序博客网 时间:2024/05/16 13:02

问题及代码:

/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:李盈盈 * 完成日期:2015年 04 月 11 日 * 版 本 号: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);              //a的数据是aa    }    ~A()    {        delete []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;}


运行结果:

知识点总结:

  将注释(a)所在的那一行去掉,程序运行不正常,因为指针为野指针。
  a数据所占内存要在aa的基础上加1,因为数据为字符型,最后有"\0".若a不是指向字符,则没必要加1.

0 0
原创粉丝点击