6.4. :                               163

my_string() : len(O)

{ s = new char[l]; assert(s != 0); s[0] = 0; }

my_string(const my_string& str);   // 

my_string(const char* p);       // 

~my_string() { delete [] s; }

void assign(const my_string& str);

void print() const { cout  s  endl; }

void concat(const my_string& a, const my_string& b) ;

private:

char* s;

int len;

};

iny_string::my_string(const my_string& str) : len(str.len)
{

s = new char[len + 1];

assert(s i = 0) ;

strcpy(s, str.s);

}

void my_string::assign(const my_string& str)
{

if (this == &str) //a == ;   
return;

delete [] s;

len = str.len;

s = new char[len + 1] ;

assert(s != 0 ) ;

strcpy(s, str.s);

}

void my_string::concat(const my_string& a,

const my_string& b)
{

char* temp = new char[a.len + b.len + 1];

len = a.len + b.len;

strcpy(temp, a.s);

strcat(temp, b.s);

delete [] s;

s = new char[len + 1] ;

assert(s != 0) ;

strcpy(s, temp) ;

}

     my_string,    -
  my_sfcring ,       
my_string.      char   -
 len,        my_st ring.