关于operator+导致内存错误
这是+的源码:
exstring operator+(const exstring &exstr_f, const exstring &exstr_s){
exstring ex;
if (!exstr_f.construct_ptr){
ex = exstr_f;
if (!exstr_s.construct_ptr){
ex = exstr_s;
}
}
else{
ex.construct_ptr = new char[strlen(exstr_f.construct_ptr) + strlen(exstr_s.construct_ptr) + 1];
strcpy(ex.construct_ptr, exstr_f.construct_ptr);
strcat(ex.construct_ptr, exstr_s.construct_ptr);
}
return ex;
}
这是=的源码:
exstring &exstring::operator=(const exstring &exstr){
if (this == &exstr){
return *this;
}
construct_ptr = NULL;
int length = strlen(exstr.construct_ptr);
construct_ptr = new char[length + 1];
strcpy(construct_ptr, exstr.construct_ptr);
return *this;
}
类应该没有问题,而且我没有用构造函数删除construct_ptr,但是这样调用就会出错
exstring sx;
exstring a("abc");
exstring b("p");
sx=a + b;