+= 和 -= 操作符没有对自己定义的 String 类型重载。
String & operator+=( const String & s2 );
String & operator-=( const String & s2 );
String & String::operator+=( const String & s2 )
{
char * s = new char[ strlen( sp ) + strlen( s2.sp ) + 1 ];
strcpy( s, sp );
strcat( s, s2.sp );
delete [] sp;
sp = s;
return *this;
}
String & String::operator-=( const String & s2 )
{
char * p = strstr( sp, s2.sp );
if ( p )
{
char * s = new char[ strlen( sp ) - strlen( s2.sp ) + 1 ];
*p = '\0';
strcpy( s, sp );
p += strlen( s2.sp );
strcat( s, p );
delete sp;
sp = s;
}
return *this;
}