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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.93
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
#1

что такое статический полиморфизм? - C++

26.05.2013, 20:11. Просмотров 8282. Ответов 32
Метки нет (Все метки)

что такое статический полиморфизм?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 20:11     что такое статический полиморфизм?
Посмотрите здесь:

что такое полиморфизм C++
C++ Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
Что такое перегрузка оператора? Что у меня в коде за ошибка? C++
Полиморфизм и наследование - что это? C++
C++ Полиморфизм. Как в предке объявить статический массив, который можно будет использовать в наследниках?
В этой части кода происходит объявление функций? Что такое void? Что в скобках? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
26.05.2013, 20:47     что такое статический полиморфизм? #2
Цитата Сообщение от Mar-12 Посмотреть сообщение
статический полиморфизм?
Например, перегрузка функций.
Конечное действие определяется во время компиляции.

При динамическом полиморфизме - на этапе выполнения
Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 130
26.05.2013, 21:13  [ТС]     что такое статический полиморфизм? #3
Croessmah, а кроме перегрузки какие еще примеры можете сказать?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,383
Завершенные тесты: 1
26.05.2013, 21:19     что такое статический полиморфизм? #4
Инстанцирование шаблонов.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
26.05.2013, 21:22     что такое статический полиморфизм? #5
C++
1
2
3
4
5
template <typename Obj>
void Foo(Obj obj)
{
   obj.doSomething();
}
функция компилируется или не компилируется в зависимости от того, есть ли у объекта типа
Оbj method doSomething или мембер с именем doSomething, для которого можно применить оператор ();
все это дело определяется на этапе компиляции. и в зависимости от объекта, вызов
будет делать то или иное. причем тут объекты не связаны между собой каким-нибудь
базовым классом как в случае с динамическим полиморфизмом, где похожее поведение
достигается за счет виртуальных функций.
_Mutex
Заблокирован
26.05.2013, 21:27     что такое статический полиморфизм? #6
Цитата Сообщение от Mar-12 Посмотреть сообщение
что такое статический полиморфизм?
Я это называю проще - затирание.
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
26.05.2013, 21:28     что такое статический полиморфизм? #7
Цитата Сообщение от _Mutex Посмотреть сообщение
Я это называю проще - затирание.
!=
Это не одно и тоже
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
26.05.2013, 23:19     что такое статический полиморфизм? #8
Цитата Сообщение от _Mutex Посмотреть сообщение
затирание
впервые вижу этот термин - он обще-употребителен?
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
26.05.2013, 23:24     что такое статический полиморфизм? #9
Цитата Сообщение от ITcrusader Посмотреть сообщение
впервые вижу этот термин - он обще-употребителен?
не понятно только что это означает - переопределение или перекрытие. По слову - переопределение, по логике ответа - перекрытие
_Mutex
Заблокирован
28.05.2013, 12:02     что такое статический полиморфизм? #10
Цитата Сообщение от Croessmah Посмотреть сообщение
!=
Это не одно и тоже
это одно и тоже.
C++
1
2
3
4
5
6
7
8
class A{
public:
    void S(){};
};
class B:public A{
public:
    void S(){};
};
Здесь переопределение метода в потомке затирает метод родителя, а затирает потому, что вызов метода родителя становится невозможен без явного указания, из класса потомка. Но если привести потомка к родителю, то вызовется именно метод, родителя. Фактически нечего не происходит, каждый имеет свою версию функции и вызывает ее - это и обозвали статическим полиморфизмом, а я называю проще - затирание.

Переопределение - это повторное определение, вне зависимости виртуальная ф-я или нет.
Добавлено через 10 минут
Цитата Сообщение от ITcrusader Посмотреть сообщение
впервые вижу этот термин - он обще-употребителен?
это не термин.
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
28.05.2013, 12:12     что такое статический полиморфизм? #11
Цитата Сообщение от _Mutex Посмотреть сообщение
Цитата Сообщение от Mar-12 Посмотреть сообщение
что такое статический полиморфизм?
Я это называю проще - затирание.
Цитата Сообщение от _Mutex Посмотреть сообщение
что вызов метода родителя становится невозможен без явного указания, из класса потомка.
Это лишь одно из проявлений статического полиморфизма, а не сам статический полиморфизм, так что !=
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.05.2013, 12:21     что такое статический полиморфизм? #12
http://stackoverflow.com/questions/5...ymorphism-in-c тут и про статик есть.
_Mutex
Заблокирован
28.05.2013, 12:33     что такое статический полиморфизм? #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Это лишь одно из проявлений статического полиморфизма, а не сам статический полиморфизм, так что !=
это все и есть статический полиморфизм, другого нет.

Добавлено через 41 секунду
Цитата Сообщение от ForEveR Посмотреть сообщение
http://stackoverflow.com/questions/5...ymorphism-in-c тут и про статик есть.
зачем выкладывать ссылки из ниоткуда , если есть простые авториретные страницы
http://ru.wikipedia.org/wiki/C%2B%2B...B8.D0.B7.D0.BC


Друзья мои, если вам что то не нравится, учите теорию. Не надо на меня накидываться все разом, как волки на мясо.
Ответ последний.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.05.2013, 12:41     что такое статический полиморфизм? #14
_Mutex, Википедия авторитетнее stackoverflow? Are you kidding me?
_Mutex
Заблокирован
28.05.2013, 12:43     что такое статический полиморфизм? #15
Друзья мои, если вам что то не ясно - учите теорию.
Не надо на меня бросаться все разом, как волки (( ...Я свой ответ пояснил, на этом все.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.05.2013, 12:44     что такое статический полиморфизм? #16
_Mutex, Это вам нужно учить теорию. Полиморфизм в С++ многонранен и не ограничивается ТОЛЬКО динамическим. То, что вы привели, является частным случаем статического полиморфизма.
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
28.05.2013, 12:57     что такое статический полиморфизм? #17
Цитата Сообщение от _Mutex Посмотреть сообщение
если есть простые авториретные страницы
Не в данной тематике. Но если для Вас это авторитетная страница, то вот Вам с википедии цитата:
Полиморфизм может пониматься как наличие точек кастомизации в коде, когда один и тот же написанный программистом фрагмент кода может означать разные операции в зависимости от чего-либо.

В одном случае конкретный смысл фрагмента зависит от того, в каком окружении код был построен. Это т.н. статический полиморфизм. Перегрузка функций, шаблоны в Си++ реализуют именно статический полиморфизм. Если в коде шаблонного класса вызвана, например, std::sort, то реальный смысл вызова зависит от того, для каких именно типовых параметров будет развернут данный шаблон - вызовется одна из std::sort<T>.
Добавлено через 1 минуту
Цитата Сообщение от _Mutex Посмотреть сообщение
Друзья мои, если вам что то не ясно - учите теорию.
Вот вот, учите теорию...и не по википедии

Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Википедия авторитетнее stackoverflow?
Видимо да
Самое интересное, что если пройти по ссылке на указанную страницу википедии, то там есть ссылка на страницу с определением полиморфизма, откуда, собственно и приведена цитата



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от _Mutex Посмотреть сообщение
Друзья мои, если вам что то не нравится, учите теорию.
Цитата Сообщение от _Mutex Посмотреть сообщение
Не надо на меня накидываться все разом, как волки на мясо.
И кто тут на кого еще набросился

_Mutex
Заблокирован
28.05.2013, 13:16     что такое статический полиморфизм? #18
Цитата Сообщение от Croessmah Посмотреть сообщение
Не в данной тематике. Но если для Вас это авторитетная страница, то вот Вам с википедии цитата:


Добавлено через 1 минуту

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

Вы мне показываете реализации стат. полиморфизма и говорите .. вот видишь еще тут и тут. Вы пишете про следствие. Да принцип тут этот используется, но кроме как в стат. полиморфизме больше нигде.
ГДЕ в статическом полиморфизме используется ДРУГОЙ принцип? Покажите где?
Я говорил и говорю, что называю это затиранием, когда выбирается один вариант и недоступен другой (затерт).
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.05.2013, 13:20     что такое статический полиморфизм? #19
_Mutex, Я может слегка не понимаю, но как это можно назвать затиранием?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <typeinfo>
 
template<typename T>
void function()
{
   std::cout << typeid(T).name() << std::endl;
}
 
int main()
{
   function<int>();
   function<double>();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 13:24     что такое статический полиморфизм?
Еще ссылки по теме:

C++ Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
C++ Что такое хэндлер файла? Что такое файловый указатель?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них C++
Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
28.05.2013, 13:24     что такое статический полиморфизм?
  #20

Не по теме:

Кстати,

Цитата Сообщение от _Mutex Посмотреть сообщение
Переопределение - это повторное определение, вне зависимости виртуальная ф-я или нет.
Если функция не виртуальна, то происходит банальное перекрытие, а не переопределение

Yandex
Объявления
28.05.2013, 13:24     что такое статический полиморфизм?
Ответ Создать тему
Опции темы

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