问题及代码:
/*。
*Copyright(c)2014,烟台大学计算机学院
*All right reserved,
*文件名:test.cpp
*作者:liu_feng_zi_
*完成日期:2015年4月15日
*版本号:v1.0
*问题描述:将注释(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)这样处理的意义在于:_确定数组长度_____________________________
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;
}
/*
问题一:<img src="https://img-blog.youkuaiyun.com/20150415082655076?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1X2Zlbmdfemlf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
问题二:每串字符后都存在终止字符
问题三:没必要,没有终止字符
*/