下面的代码不起作用:问题指针和构造
class String{
public:
char* str;
int* counter;
String(){
str = NULL;
counter = new int;
*counter = 1;
};
String(const char* str1){
String();
str = new char[strlen(str1)+1];
strcpy(str, str1);
};
};
我已经与它的内部改变调用空构造和替换它,现在下面的代码工作:
class String{
public:
char* str;
int* counter;
String(){
str = NULL;
counter = new int;
*counter = 1;
};
String(const char* str1){
//String();
str = new char[strlen(str1)+1];
strcpy(str, str1);
counter = new int;
*counter = 1;
};
你可以请建议为什么吗?
谢谢,李。
您应该说明它是什么,你考虑没有工作,它是什么,你认为现在可能工作对你想要达到的目标给出理性。对于初学者来说,你应该使用'std :: string',因为它已经工作了,从那里开始......你提供泄漏内存的两个实现,计数器不需要动态分配,通常是一个好主意成员暴露... – 2010-09-14 14:31:50
你为什么要调用默认的构造函数,看起来没有附加值? – 2010-09-14 14:32:36