Cтраница 3
На рис. 15.13 перегруженная функция square используется для вычисления квадрата чисел типов int и double. В главе 17 мы обсудим, каким образом можно перегружать операции и специфицировать способ их воздействия на объекты определяемых пользователем типов. В разделе 15.15 вводятся шаблоны функций для выполнения идентичных задач над многими различными типами данных. В главе 20 подробно обсуждаются шаблоны функций и шаблоны классов. [31]
Типы возвращаемых значений перегруженных функций могут быть одинаковыми или разными. Следует иметь в виду, что при создании двух функций с одинаковым именем и одинаковым списком параметров, но с различными типами возвращаемых значений, будет сгенерирована ошибка компиляции. [32]
Еще один вариант перегруженной функции get () принимает три параметра. Первый параметр - это указатель на массив символов, второй указывает максимальное число символов в строке с учетом концевого нулевого символа, добавляемого автоматически, и третий задает разделитель строк. [33]
Если передать в перегруженную функцию аргумент, который не совпадает с типом аргумента, определенного для любого варианта функции, то компилятор попытается преобразовать аргумент к одному из определенных типов. Будет выполнено либо стандартное преобразование ( например, int в long), либо преобразование, определенное пользователем ( гл. Если преобразовать типы невозможно, то компилятор сгенерирует ошибку. [34]
Как и при использовании других перегруженных функций, компилятор выбирает нужное объявление конструктора, основываясь на числе и типе параметров. [35]
Это определение функции использует перегруженную функцию орега - tor, чтобы определить, равен ли один массив Array другому, а затем возвращает отрицание этого результата. [36]
В идеале вы должны писать перегруженные функции, для которых не существует неоднозначности в трактовке аргументов. В отдельных случаях это невозможно, и тогда приведение типов будет единственным выходом. [37]
В классе Employee доступ к перегруженной функции operateг заблокирован. Дело в том, что в объявлениях методов доступа класса Employee указано, что все эти методы, такие как GetFirstNameQ, возвращают константные ссылки. [38]
Как видим в приведенном примере, перегруженные функции могут возвращать результаты различных типов. Однако, как показано в следующем ошибочном коде, две перегруженные функции не могут отличаться только типом возвращаемого значения. [39]
При создании DLL в Delphi и использовании перегруженных функций ( то есть множества функций, использующих одно и то же имя и отмеченных директивой overload) среда Delphi позволяет экспортировать только одну из перегруженных функций с оригинальным именем, указывая список ее параметров в инструкции exports. Если необходимо экспортировать множество перегруженных функций, то в инструкции exports следует указать различные имена, для того чтобы различить перегрузку. [40]
Одно из преимуществ шаблонов по сравнению с перегруженными функциями состоит в том, что при использовании шаблона нет необходимости предвидеть, к какой версии функции произойдет обращение в программе. Вместо этого в программу включается единственное определение шаблона, а компилятор автоматически генерирует и сохраняет только те версии функции, которые будут фактически вызываться. [41]
Как решить, что следует использовать в программе - перегруженные функции или значения по умолчанию. [42]
Функция с пропущенными аргументами по умолчанию может оказаться вызванной аналогично другой перегруженной функции; это синтаксическая ошибка. [43]
Функция setValue ( Animal &, int) была объявлена дружественной, но перегруженная функция setValue ( Animal &, int, int) не была объявлена дружественной. [44]
Функция с опущенными аргументами по умолчанию может вызываться точно так же, как другая перегруженная функция; это является синтаксической ошибкой. [45]