С++ для начинающих


         

Перегрузка операторов - часть 3


   // ...

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;

}




Содержание  Назад  Вперед