Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #25




Новости клуба

Сегодня новостей больше обычного и во всех присутствует слово "новый".

На главной странице клуба произбедено обновление дизайна страницы (конечно изменен и код). Теперь страница отвечает требованиям стандартов XHTML 1.0 Transitional и CCS2. Правда это пока не касается статей, но над ними тоже ведется работа.

Мы приобрели домен, который у нас уже когда-то был - shelek.ru. Там сейчас расположен еще один форум - "запасной аэродром". Это место, где в случае каких-либо технических проблем с основным форумом (в том числе недоступность в связи с техническими работами с ПО форума) можно узнать новости (о причинах происходящего) и пообщаться. так же этот форум предназначен для тестирования новой версии форумного движка (SMF 1.1 Final), на который скоро будет переведен и наш главный форум (http://forum.shelek.com/).

На форуме появился раздел Perl. Пока там с десяток тем, но мы надеемся, что любители этого языка есть среди нас. Ждем вас!



В нашей библиотеке пополнение.

ADO NET 2.0 для профессионалов

Программирование драйверов и систем безопасности

JavaScript Bible, 4th edition

Внутреннее устройство Windows



Что такое перегрузка функций?



Часть 1. Первое знакомство. Чего и куда грузим?




Раньше, или позже, но любой программист сталкивался с проблемой - какое имя дать новой функции. Конечно, компилятору-то "по барабану", что EfgD23j5v6H(int D4fG3e), что Search(int Number) - он и то и другое воспримет с одинаковой радостью. Но нам-то желательно иметь хоть немного осмысленные имена функций. Давайте представим себе, что мы пишем некую самопальную базу данных, и нам надо сделать в ней подсистему поиска. Это чисто гипотетическое предположение, скорее всего никто ТАК делать не будет :) Каждой функции поиска желательно дать осмысленное имя, что могло бы привести вот к такому результату:

Код: (C++)
  int Search_int(int Num);
  int Search_long(long Num);
  int Search_float(float Num);
  int Search_double(double Num);

Но гараздо проще дать всем этим функциям одно имя для поиска всех типов данных. Так, например:

Код: (C++)
  int Search(int Num);
  int Search(long Num);
  int Search(float Num);
  int Search(double Num);

Заметим - имена функций одинаковы, отличие только в типах аргументов. Подобный прием и называется перегрузкой функций. Цель перегрузки функций состоит в том, чтобы функции с одним именем ВЫПОЛНЯЛИСЬ ПО-РАЗНОМУ (и возможно возвращали разные значения) при обращении к ним с разными по типам и количеству параметрами. В языке С++ функции могут иметь одинаковые имена до тех пор, пока они значимо отличаются хотя бы одним параметром. Если значимого различия нет - компилятор предупредит о возникшей неопределенности.
Я привел такой (не очень удачный) пример еще с одной целью - хорошо, если вы сразу увидите, к каким проблемам может привести подобная перегрузка. Если нет - ничего страшного, мы все равно рассмотрим это попозже.
Необходимо отличать перегрузку и редекларацию (переобъявление, переопределение) функции. Если функции возвращают одинаковый тип и список параметров у них абсолютно одинаковый, то второе объявление функции будет обработано как повторное определение. Если списки параметров двух функций абсолютно одинаковы, но отличаются только типы возврата, то второе объявление - ошибка:

Код: (C++)
  int  Search(int Num);
  long Search(int Num); //ошибка!


Прочитать статью целиком можно на нашем сайте.


Разное

Не забывайте про наш домик в интернете. Не поленитесь - посетите!


А теперь прощаемся с Вами до следующего выпуска.

                                        С уважением, команда Клуба.




В избранное