В книге C ++ Primer он содержит код для массивов символов в стиле C и показывает, как перегрузить оператор =
в статье 15.3 Operator = ].
String& String::operator=( const char *sobj )
{
// sobj is the null pointer,
if ( ! sobj ) {
_size = 0;
delete[] _string;
_string = 0;
}
else {
_size = strlen( sobj );
delete[] _string;
_string = new char[ _size + 1 ];
strcpy( _string, sobj );
}
return *this;
}
Теперь я хотел бы знать, почему возникает необходимость возвращать ссылку String &
, когда приведенный ниже код выполняет ту же работу без каких-либо проблем:
void String::operator=( const char *sobj )
{
// sobj is the null pointer,
if ( ! sobj ) {
_size = 0;
delete[] _string;
_string = 0;
}
else {
_size = strlen( sobj );
delete[] _string;
_string = new char[ _size + 1 ];
strcpy( _string, sobj );
}
}