这段代码怎么一运行就崩溃啊(有static和没有explict)

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:56:15
这段代码怎么一运行就崩溃啊
#include <iostream>
using namespace std;
class C
{
private:
char* a;

public:
static int i;
C(char b[])
{
strcpy(a,b);
i++;
}
~C()
{
i--;
}
char* getA()
{
return a;
}
};
int C::i = 100;
void main()
{
C c = "ldjf";
cout<<C::i<<endl;
cout<<c.getA();
cin.get();
}

类C中对于指针a你并没有分配堆空间就向里面strcpy数据,它是个"野"指针,当然会引起错误"内存崩溃",帮你适当的修改下构造和析构函数吧,写的不好不要笑话,好多年没用C++了,你static int i的用途我想大概是想记录下有多少个C对象在被使用吧,这里我在函数中就不写出这些代码了

#include <string.h> //添加头文件string.h

C::C()/*添加一个无参的构造函数,让它什么都不做,仅仅初始化指针a为空指针*/
{
a = 0;
}

C::C(char *b)
{
a = new char[strlen(b)+1];
strcpy(a, b);
}

C::~C()
{
if (a) delete a;
}