В книге С++ 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 );
}
}
- пожалуйста, помогите.