I have a test class of my to make my own string functions. I have a problem with the copy destructor.
I have 2 strings: s1 and s2. I call the function s3 = s1 + s2;
It first calls the operator+ function and when it's finished it calls the destructor. Because of this the string object in the operator= function is empty. How can I fix this?
Destructor:
String::~String() {
  if (this->str)
    delete[] str;
  str = NULL;
  len = 0;
}
Copy Constructor:
String::String(const String& string) {
  this->len = string.len;
  if(string.str) {
    this->str = new char[string.len+1];
    strcpy(this->str,string.str);
  } else {
    this->str = 0;
  }
}
operator=:
String & String::operator= (const String& string) {
  if(this == & string)
    return *this;
  delete [] str;
  this->len = string.len;
  if(string.str) {
    this->str = new char[this->len];
    strcpy(this->str,string.str);
  } else {
    this->str = 0;      
  }
  return *this;
}
operator+:
String& operator+(const String& string1 ,const String& string2)
{
  String s;
  s.len = string1.len + string2.len;
  s.str = new char[string1.len + string2.len+1];
  strcpy(s.str,string1.str);
  strcat(s.str,string2.str);
  return  s;
}
 
     
     
    