Форум программистов, компьютерный форум CyberForum.ru

Перегрузка функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.75
грязный
31 / 31 / 0
Регистрация: 15.11.2008
Сообщений: 205
08.09.2009, 09:55     Перегрузка функции #1
Что такое перезагрузка функции в с++?
Для чего она нужна? Есть случаи, когда без нее никак?
Приведите пример перезагрузки функции?
Тут есть перезагрузка?

C++
1
2
3
4
5
6
7
8
static int Square(int var)
    {
      return (var * var);
    }
    static long Square(long var)
    {
      return (var * var);
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Paulie
Айхрень...
 Аватар для Paulie
306 / 174 / 4
Регистрация: 02.06.2009
Сообщений: 1,078
08.09.2009, 10:03     Перегрузка функции #2
Ну для начала - перегрузка функции. По этому запросу поисковая система выдаст много чего интересного
Padonok
 Аватар для Padonok
14 / 14 / 1
Регистрация: 01.02.2009
Сообщений: 23
08.09.2009, 10:23     Перегрузка функции #3
Правильней будет перегрузка функции...
Несколько различных функций с одинаковым именем называется перегрузка функций. Такие функции должны отличатся друг от друга списками параметров: типом или количеством параметров либо и тем, и другим одновременно.

C++
1
2
3
int myFunction (int,int);
int myFunction (long,long);
int myFunction (long);
Типы возвращаемых значений перегруженных функций могут быть одинаковыми или разными.
Sergei
 Аватар для Sergei
1424 / 691 / 40
Регистрация: 22.04.2008
Сообщений: 1,608
08.09.2009, 10:23     Перегрузка функции #4
В твоем примере есть перегрузка функции.
Перегрузка функции это когда объявляются несколько функции с одним и тем же именем
но количество аргументов и их типы могут быть различны также и возвращаемое значение может быть различного типа.
Это позволяет удобному написанию программ. Так как нет необходимости давать различным функциям делающим примерно одно и тоже, но с аргументами различных типов и их количество,
разные имена и запоминать их. Перегрузка функции особенно важна в ООП на основе перегрузки функции реализуется полиморфизм.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
08.09.2009, 10:40     Перегрузка функции #5
Цитата Сообщение от Sergei Посмотреть сообщение
озвращаемое значение может быть различного типа.
возвращаемое значение не учитывается в перегрузке функций.
Цитата Сообщение от Sergei Посмотреть сообщение
Перегрузка функции особенно важна в ООП на основе перегрузки функции реализуется полиморфизм.
ты написал бред. покажи мне полиморфизм, который достигается благодаря перегрузке функции.
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,886
08.09.2009, 13:45     Перегрузка функции #6
ты написал бред. покажи мне полиморфизм, который достигается благодаря перегрузке функции.
Множество реализаций через один интерфейс. Что это, если не полиморфизм?
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.09.2009, 15:11     Перегрузка функции #7
Г. Шилдт "Самоучитель С++" 3-е издание, стр 13
Код
Полиморфизм может применяться также и к операторам. Фактически во
всех языках программирования ограниченно применяется полиморфизм,
например, в арифметических операторах. Так, в С, символ + используется
для складывания целых, длинных целых, символьных переменных и чисел с
плавающей точкой. В этом случае компилятор автоматически определяет,
какой тип арифметики требуется. В C++ вы можете применить эту концеп-
цию и к другим, заданным вами, типам данных. [U]Такой тип полиморфизма
называется перегрузкой операторов[/U] (operator overloading).
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
08.09.2009, 15:16     Перегрузка функции #8
В объектно-ориентированных языках класс является типом данных. Полиморфизм реализуется с помощью наследования классов и виртуальных функций. Класс-потомок наследует сигнатуры методов класса-родителя, но реализация этих методов может быть другой, соответствующей специфике класса-потомка.
Полиморфизм Это вроде уже относится к виртуальным функциям, а это вроде, как не совсем перегрузка. Что в базовом классе, что в наследнике функция будет выглядеть одинаково хоть внутри код будет разный.
А смысл перегрузки в том, чтобы одной функции задавать различное число параметров.
Если и использовать перегрузку в классе, то она будет работать точно так же, как и без класса.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
08.09.2009, 18:46     Перегрузка функции #9
Полиморфизм - это концепция теории типов, согласно которой имена (например, объявления переменных) могут обозначать объекты разных классов, имеющих общий суперкласс. Следовательно, объекты, обозначаемые полиморфным именем, могут по-разному выполнять общий набор операций.
"Объектно-ориентированный анализ и проектирование с примерами приложений" (Гради Буч).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2009, 20:19     Перегрузка функции
Еще ссылки по теме:

Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций C++
C++ Перегрузка функции
C++ Перегрузка функции
C++ Дружественные функции. Наследование. Перегрузка функции
C++ Перегрузка функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mustardandrew
Человек
 Аватар для mustardandrew
96 / 80 / 3
Регистрация: 16.06.2009
Сообщений: 229
08.09.2009, 20:19     Перегрузка функции #10
Можно использовать шаблоны вместо перегрузки

C++
1
2
3
4
template<class T>
T& max(T& a, T& b){
  return (a>b)?a:b;
}
пример использования
C++
1
2
3
4
5
int a=10, b=20;
int c=max(a,b);
 
double a1=1.3, b1=1.09;
double c1=max(a1, b1)
Yandex
Объявления
08.09.2009, 20:19     Перегрузка функции
Ответ Создать тему
Опции темы

Текущее время: 03:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru