738 Часть II. Программирование на C++

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

Независимо от конкретного типа чисел, будут ли это float, double, long или int, с точки зрения C++ выражение а + ь будет неявно рассматриваться как вызов функции с очень специальным синтаксисом, которая получает на входе два аргумента и возвращает третье значение того же типа.

Если предположить, что объявление

number operator+(number a, number b)

описывает функцию сложения данных некоторого воображаемого типа number, то компилятор, натолкнувшись на комбинацию из двух переменных типа number и операции сложения (+), транслирует ее как вызов функции.

По всей вероятности, функцию, которая получает две переменные и возвращает их сумму, вы представите себе приблизительно так:

*

number Add( number a, number b)

в полном соответствии с общей формой функций в C++. Не считая различий в именах, обе функции выглядят совершенно идентично.

Причина для использования оператор-функций более весома, чем могло показаться. Вроде бы очевидно, что нет необходимости создавать оператор-функции для базовых типов данных, так же как и нет, как кажется, особой необходимости их писать для производных типов. Но когда вы начнете конструировать свои классы, то предназначенные для работы с ними оператор-функции позволят сделать выражения с производными типами данных столь же простыми, как и с базовыми. Это происходит благодаря тому, что операции неявно рассматриваются как функции. Корни такого подхода кроются в том, что большинство людей имеют громадный, еще со времен начальной школы, опыт использования арифметических операций (+, -, * и /). А значит, удобно иметь возможность применять операции к данным любого типа.

Согласитесь, что использование операций вроде сложения, вычитания, умножения и деления упрощает дело. По всей вероятности, операции с похожим синтаксисом, выполняющие новые или незнакомые функции, также должны быть достаточно просты. Знакомые операции облегчают изучение базовых типов данных. Без операций немыслимы выражения, которые являются фундаментом программирования и рефреном проходят через всю книгу.

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