第六周 项目一 (2)将注释(a)所在的那一行去掉,会出现什么现象

来源:互联网 发布:痕惠吃淘宝 编辑:程序博客网 时间:2024/06/11 02:27
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:d.cpp*作    者:张旺华*完成日期:2015年4月11日*版 本 号:v1.0/2)将注释(a)所在的那一行去掉,会出现什么现象?为什么?//为什么a数据成员所占用的存储空间要在aa长度基础上加1?//若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?*/#include<iostream>#include<cstring>using namespace std;class A{private:    char *a;public:    A(char *aa)    {        a = new char[strlen(aa)+1];  //(a)这样处理的意义在于:__字符串后面有/0所以要加+1____________________________        strcpy(a, aa);  //(b)数据成员a与形式参数aa的关系:_____复制______________________________    }    ~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;}

结果无法运行,

2)将注释(a)所在的那一行去掉,会出现什么现象?为什么? 无法运行:a 没有深复制
//为什么a数据成员所占用的存储空间要在aa长度基础上加1?   字符串后要加 ‘\0';
//若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?不需要。

0 0
原创粉丝点击