/*
All rights reserced.
文件名称:main.cpp
作者:李鑫
完成日期:2016.5.17
问题描述::(1)去掉(a)所在行去掉,会出现怎样的现象?(2)为什么a所占的储存空间要在aa长度基础上加一?(3)若指针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);
}
~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是个野指针;
因为a指向的是字符,最后有一个'\0',所以要加一;