Перегрузка операции индексирования

Функция operator[]() обычно применяется для индексирования элементов массива, поэтому чаще всего используют целочисленный параметр. Оператор [] можно использовать в правой части оператора присваивания. Если нужно использовать операторную функцию operator[]() в левой части оператора присваивания для модификации элементов массива, то она должна возвращать ссылку на элемент массива с индексом i. В этом случае оператор [] имеет вид:

тип& имя_класса::operator[](int i)

{ //тело функции

}

Здесь тип – тип элементов массива.

Оператор индексирования должен быть нестатической функцией-членом. Дружественную функцию применять нельзя.

Для индексирования многомерных массивов вместо операции [] удобнее использовать операцию (). Это связано с тем, что операция [] - бинарная, поэтому в скобках может быть только один операнд-индекс. Это создает чисто технические неудобства при индексировании многомерных массивов. Поэтому проще задействовать операцию (), так как количество ее аргументов может быть произвольным.

Перегрузка операции вызова функции ()

Класс, в котором определена операция вызова функции, называется функциональным. От такого класса не требуется наличия других полей и методов.

Операцию () можно определять только как метод класса. Можно определить перегруженные операции вызова функции с различным числом аргументов и любым типом возвращаемого значения. Можно предусматривать значения аргументов по умолчанию.

Перегрузка операторов << и >>

Как известно, операторы << и >> в языке С++ перегружены и позволяют вводить и выводить данные встроенных типов. Эти операторы можно перегрузить так, чтобы они выводили объекты классов, определенных пользователем.

Оператор вывода << называют оператором вставки, потому что он вставляет символы в поток. Аналогично оператор ввода >> называется оператором извлечения, потому что он извлекает символы из потока.

Функции, перегружающие операторы вставки и извлечения, называются функциями вставки и извлечения соответственно.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: