Cтраница 1
![]() |
Использование перегруженных функций. [1] |
Перегруженные функции, выполняющие аналогичные задачи, делают программы более удобочитаемыми и понятными. [2]
![]() |
Декорирование имен для обеспечения надежного согласования типов. [3] |
Перегруженные функции, которые выполняют тесно связанные задачи, делают про граммы более понятными и легко читаемыми. [4]
![]() |
Декорирование имен для обеспечения надежного согласования типов. [5] |
Перегруженные функции различаются с помощью их сигнатуры - комбинации имени функции и типов ее параметров. Компилятор кодирует идентификатор каждой функции по числу и типу ее параметров ( иногда это называется декорированием имени), чтобы иметь возможность осуществлять надежное связывание типов. Надежное связывание типов гарантирует, что вызывается надлежащая функция и что аргументы согласуются с параметрами. Компилятор выявляет ошибки связывания и выдает сообщения о них. Каждое декорированное имя начинается с символа, предшествующего имени функции. Две эти функции square отличаются своими списками параметров; одна определяет d как double, а другая определяет i как int. Типы возвращаемых значений функций не отражаются в декорированных именах. [6]
Перегруженные функции обычно используются для выполнения сходных операций над различными типами данных. Программист пишет единственное определение шаблона функции. Основываясь на типах аргументов, указанных в вызовах этой функции, C автоматически генерирует разные функции для соответствующей обработки каждого типа. Таким образом, определение единственного шаблона определяет целое семейство решений. [7]
Перегруженные функции могут иметь разные или одинаковые типы возвращаемых значений и обязательно должны иметь разные списки параметров. Две функции, отличающиеся только типами возвращаемых значений, вызовут ошибку компиляции. [8]
Перегруженные функции различаются своей сигнатурой - комбинацией имени функции и типов ее параметров. [9]
Перегруженные функции, которые выполняют тесно связанные задачи, делают программы более понятными и легко читаемыми. [10]
Перегруженные функции operator объявляются в классе PhoneNumber как дружественные функции. Перегруженные операции ввода-вывода должны быть объявлены как дружественные, если им необходим доступ к каким-то элементам, помимо открытых. Друзья класса имеют доступ к закрытым элементам. [11]
Перегруженные функции обычно используются для выполнения похожих операций над различными типами данных. Если же для каждого типа данных должны выполняться идентичные операции, то более компактным и удобным решением является использование шаблонов функций - возможности, появившейся в C сравнительно недавно. При этом программист должен написать всего одно описание шаблона функции. Основываясь на типах аргументов, использованных при вызове этой функции, компилятор будет автоматически генерировать объектные коды функций, обрабатывающих каждый тип данных. [12]
Перегруженные функции работают превосходно, пока вы используете при их вызове правильные типы данных. Но что делать, если типы не совпадают. В этом случае необходимо использовать приведение типов. [13]
Перегруженные функции должны различаться типом и количеством параметров. Эти две функции различаются только возвращаемыми значениями. [14]
Перегруженные функции обычно используются для выполнения сходных операций над различными типами данных. [15]