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

来源:互联网 发布:广电网络宽带资费 编辑:程序博客网 时间:2024/06/05 02:35
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:test.cpp*作    者:徐洪祥*完成日期:2015年4月14日*版 本 号: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)这样处理的意义在于:_为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所在那行去掉,会出现什么现象?

程序运行错误,无法运行

为什么a数据成员所占用的存储空间要在aa长度基础上加1?若指针a不是指向字符,是否有必要加1?

aa 后面还有个‘\0'。需要加1才能将aa这个字符串完全的复制;

没必要

0 0
原创粉丝点击