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


     Смотри здесь эвклаз. |     

Разработка перегруженных операторов - часть 2


String s1( "C" );

String s2( "++" );

s1 = s1 + s2;    // s1 == "C++"

Но этого недостаточно

для поддержки составного оператора присваивания

s1 += s2;

Его следует определить явно, так, чтобы он поддерживал ожидаемую семантику.

Упражнение 15.1

Почему при выполнении следующего сравнения не вызывается перегруженный оператор operator==(const String&, const String&):

"cobble" == "stone"

Упражнение 15.2

Напишите перегруженные операторы неравенства, которые могут быть использованы в таких сравнениях:

String != String

String != С-строка

C-строка != String

Объясните, почему вы решили реализовать один или несколько операторов.

Упражнение 15.3

Выявите те функции-члены класса Screen, реализованного в главе 13 (разделы 13.3, 13.4 и 13.6), которые можно перегружать.

Упражнение 15.4

Объясните, почему перегруженные операторы ввода и вывода, определенные для класса String из раздела 3.15, объявлены как глобальные функции, а не функции-члены.

Упражнение 15.5

Реализуйте перегруженные операторы ввода и вывода для класса Screen из главы 13.




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