6.2.3 Операции и Определяемые Пользователем Типы

6.2.3 Операции и Определяемые Пользователем Типы

Функция операция должна или быть членом, или получать в качестве параметра по меньшей мере один объект класса (фунциям, которые переопределяют операции new и delete, это длать необязательно). Это правило гарантирует, что пользовтель не может изменить смысл никакого выражения, не включающего в себя определенного пользователем типа. В часности, невозможно определить функцию, которая действует ислючительно на указатели.

Функция операция, первым параметром которой предполагется основной встроенный тип, не может быть функцией членом. Рассмотрим, например, сложение комплексной переменной aa с целым 2: aa+2, при подходящим образом описанной функции члне, может быть проинтерпретировано как aa.operator+(2), но с 2+aa это не может быть сделано, потому что нет такого класса int, для которого можно было бы определить + так, чтобы это означало 2.operator+(aa). Даже если бы такой тип был, то для

того, чтобы обработать и 2+aa и aa+2, понадобилось бы две различных функции члена. Так как компилятор не знает смысла +, определяемого пользователем, то не может предполагать, что он коммутативен, и интерпретировать 2+aa как aa+2. С этим примером могут легко справиться функции друзья.

Все функции операции по определению перегружены. Функция операция задает новый смысл операции в дополнение к встроеному определению, и может существовать несколько функций опраций с одним и тем же именем, если в типах их параметров имеются отличия, различимые для компилятора, чтобы он мог различать их при обращении (см. #4.6.7).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

2.6 Триумф интерфейса над пользователем?

Из книги автора

2.6 Триумф интерфейса над пользователем? Косметических улучшений за тридцать лет существования парадигмы WIMP была придумана масса, а вот более или менее серьезных, при внимательном анализе, обнаруживается только два: интеграция звука (и превращение графической


Взаимодействие с пользователем

Из книги автора

Взаимодействие с пользователем Второй пример показывает возможности взаимодействия пользователя с программой. Приложение представляет собой кнопку, которую пользователь может нажать и тогда приложение закончит свою работу. Исходный код этой программы очень


2.6 Триумф интерфейса над пользователем?

Из книги автора

2.6 Триумф интерфейса над пользователем? Косметических улучшений за тридцать лет существования парадигмы WIMP была придумана масса, а вот более или менее серьезных, при внимательном анализе, обнаруживается только два: интеграция звука (и превращение графической


Типы, характеризуемые значениями, ссылочные типы и оператор присваивания

Из книги автора

Типы, характеризуемые значениями, ссылочные типы и оператор присваивания Теперь изучите следующий метод Main() и рассмотрите его вывод, показанный на рис. 3.12.static void Main(string[] args) { Console.WriteLine("*** Типы, характеризуемые значением / Ссылочные типы ***"); Console.WriteLine(-› Создание p1"); MyPoint


Типы, характеризуемые значениями и содержащие ссылочные типы

Из книги автора

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


Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания

Из книги автора

Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания Чтобы завершить обсуждение данной темы, изучите информацию табл. 3.8, в которой приводится краткая сводка основных отличий между типами, характеризуемыми значением, и ссылочными типами.Таблица


1.3. Стоимостный анализ (ABC) и свойства, определяемые пользователем (UDP)

Из книги автора

1.3. Стоимостный анализ (ABC) и свойства, определяемые пользователем (UDP) Как было указано ранее, обычно сначала строится функциональная модель существующей организации работы - AS-IS (Как есть). После построения модели AS-IS проводится анализ бизнес-процессов, потоки данных и


Функции, определенные пользователем

Из книги автора

Функции, определенные пользователем Для сохранения своего малого объема Firebird поставляется с весьма скромным арсеналом встроенных (родных) функций трансформации данных. Пользователи могут писать свои собственные функции на известном им языке, таком как C/C++, Pascal или Object


Объекты, определенные пользователем

Из книги автора

Объекты, определенные пользователем При восстановлении копии на сервер, отличный от того, с которого были сделаны копии, вы должны обеспечить существование на новом сервере наборов символов и порядков сортировки, на которые ссылается копия. Копия не может быть


1.4. Стоимостный анализ (ЛВС) и свойства, определяемые пользователем (UDP)

Из книги автора

1.4. Стоимостный анализ (ЛВС) и свойства, определяемые пользователем (UDP) Как было указано ранее, обычно сначала строится функциональная модель существующей организации работы - AS-IS (как есть). После построения модели AS-IS проводится анализ бизнес-процессов, потоки данных и


6.3 Определяемое Пользователем Преобразование Типа

Из книги автора

6.3 Определяемое Пользователем Преобразование Типа Приведенная во введении реализация комплексных чисел слишком ограничена, чтобы она могла устроить кого-либо, потому ее нужно расширить. Это будет в основном повторением описанных выше методов. Например:class complex (* double re, im;


Аутентификация сервера пользователем

Из книги автора

Аутентификация сервера пользователем Для того чтобы пользователь А, в свою очередь, мог аутентифицировать сервер, сервер В увеличивает на единицу значение времени из запроса пользователя А и вновь шифрует его при помощи ключа KAB. Этот шифртекст и является ответом