Язык программирования C++. Вводный курс


Члены и не члены класса - часть 4


// ошибка: должен быть членом класса

char& operator[]( String &, int ix );

(Подробнее оператор присваивания рассматривается в разделе 15.3, взятия индекса – в разделе 15.4, вызова – в разделе 15.5, а оператор доступа к члену по стрелке – в разделе 15.6.)

В остальных случаях решение принимает проектировщик класса. Симметричные операторы, например оператор равенства, лучше определять в пространстве имен, если членом класса может быть любой операнд (как в String).

Прежде чем закончить этот подраздел, определим операторы равенства для класса String в пространстве имен:

bool operator==( const String &str1, const String &str2 )

{

   if ( str1.size() != str2.size() )

      return false;

   return strcmp( str1.c_str(), str2.c_str() ) ? false : true ;

}

 

inline bool operator==( const String &str, const char *s )

{

   return strcmp( str.c_str(), s ) ? false : true ;

}




Начало  Назад  Вперед



Книжный магазин