Читайте также: |
|
Одной из особенностей языка C++ является возможность распространения действия стандартных операций на операнды, для которых эти операции первоначально в языке не предполагались. Например, если S1 и S2 - символьные строки, то их конкатенацию (соединение) удобно было бы обозначить как S1 + S2. Однако бинарная операция "+" в обычном контексте языка C++ предназначена для арифметических операндов и не предусматривает строковых операндов. Никакой возможности распространить действие стандартной операции "+" на строки в виде символьных массивов или строковых констант в языке C++ нет.
Однако, если определить S1 и S2 как объекты некоторого класса, например, введенного на 6 шаге класса stroka, то для них можно ввести операцию "+", выполняемую по таким правилам, которые заранее выбрал программист.
Для этих целей язык C++ позволяет распространить действие любой стандартной операции на новые типы данных, вводимые пользователем. Распространить операцию на новые типы данных позволяет механизм перегрузки стандартных операций.
Чтобы появилась возможность использовать стандартную для языка C++ операцию (например, "+" или "*") с необычными для нее данными, необходимо специальным образом определить ее новое поведение. Это возможно, если хотя бы один из операндов является объектом некоторого класса, т.е. введенного пользователем типа. В этом случае применяется механизм, во многом схожий с механизмом определения функций.
Для распространения действия операции на новые пользовательские типы данных программист определяет специальную функцию, называемую "операция-функция" (Operator Function). Формат определения операции-функции:
Дата добавления: 2015-10-02; просмотров: 42 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Object.print(); | | | Тип_возвращаемого_значения operator знак_операции |