Если уж ты в конструкторе написал проверку успешного выделения памяти,
> if (dstr = new char[len+1])
> copy(dstr,ds.dstr,len);
> else
> exit(1);
---
то чем провинился operator+ ? :)
> if (dstr == NULL) {
> tmp = new char[len+1];
> copy(dstr,st,len);
...
> int len1 = ln(dstr);
> tmp = new char [len+len1+1];
> copy(tmp,dstr,len1);
---
|