Если строка, на которую ссылается
// ...
private:
// ...
};
и определить его следующим образом:
#include <cstring>
inline String& String::operator+=( const String &rhs )
{
// Если строка, на которую ссылается rhs, непуста
if ( rhs._string )
{
String tmp( *this );
// выделить область памяти, достаточную
// для хранения конкатенированных строк
_size += rhs._size;
delete [] _string;
_string = new char[ _size + 1 ];
// сначала скопировать в выделенную область исходную строку
// затем дописать в конец строку, на которую ссылается rhs
strcpy( _string, tmp._string );
strcpy( _string + tmp._size, rhs._string );
}
return *this;
}
inline String& String::operator+=( const char *s )
{
// Если указатель s ненулевой
if ( s )
{
String tmp( *this );
// выделить область памяти, достаточную
// для хранения конкатенированных строк
_size += strlen( s );
delete [] _string;
_string = new char[ _size + 1 ];
// сначала скопировать в выделенную область исходную строку
// затем дописать в конец C-строку, на которую ссылается s
strcpy( _string, tmp._string );
strcpy( _string + tmp._size, s );
}
return *this;
}
Содержание Назад Вперед