Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

что такое статический полиморфизм?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что такое статический полиморфизм? (C++):

что такое полиморфизм - C++
помогите понять, что такое полиморфизм , читаю книгу, не могу вникнуть, как я понялполиморфизм это перегрузка функций?? типа один интерфейс...

Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала - C++
Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для...

Статический полиморфизм. Базовый класс «прямоугольник» - C++
Здравствуйте, дорогие участники форума! Помогите, пожалуйста! Необходимо реализовать статический полиморфизм. Нужно вызвать с помощью...

Полиморфизм. Как в предке объявить статический массив, который можно будет использовать в наследниках? - C++
Всем привет. Мне необходимо в классе предке объявить статический массив который можно будет использовать в наследниках. Не очень хочется...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? - C++
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа? - C++
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

32
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
28.05.2013, 12:44 #16
_Mutex, Это вам нужно учить теорию. Полиморфизм в С++ многонранен и не ограничивается ТОЛЬКО динамическим. То, что вы привели, является частным случаем статического полиморфизма.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.05.2013, 12:57 #17
Цитата Сообщение от _Mutex Посмотреть сообщение
если есть простые авториретные страницы
Не в данной тематике. Но если для Вас это авторитетная страница, то вот Вам с википедии цитата:
Полиморфизм может пониматься как наличие точек кастомизации в коде, когда один и тот же написанный программистом фрагмент кода может означать разные операции в зависимости от чего-либо.

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

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

Не по теме:

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



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

Не по теме:

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

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


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

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

Вы мне показываете реализации стат. полиморфизма и говорите .. вот видишь еще тут и тут. Вы пишете про следствие. Да принцип тут этот используется, но кроме как в стат. полиморфизме больше нигде.
ГДЕ в статическом полиморфизме используется ДРУГОЙ принцип? Покажите где?
Я говорил и говорю, что называю это затиранием, когда выбирается один вариант и недоступен другой (затерт).
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 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>();
}
0
Croessmah
28.05.2013, 13:24
  #20

Не по теме:

Кстати,

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

0
_Mutex
Заблокирован
28.05.2013, 13:24 #21
Цитата Сообщение от ForEveR Посмотреть сообщение
_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>();
}
очень просто. Одна функция вызвана, другие затерты. Насколько я помню, может ошибаюсь компилятор всегда создает много вариантов функций на этапе компиляции, и в итоге они невидимы - затерты
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.05.2013, 13:29 #22
Цитата Сообщение от _Mutex Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
class A{
public:
void S(){};
};
class B:public A{
public:
void S(){};
};
Какое затирание)
Это - лишь пример некорректного использования языка. Для таких кейсов термин один: ошибка проектирования (См. Мейерс, Скотт: "никогда не переопределяйте в потомках не виртуальные методы", коль уж заговорили об "учите теорию").

Такое
1. выкашиваться из кода - должно.
2. приводить к неожиданным ошибкам - должно.
3. создавать трудности сопровождения - должно.
4. к полиморфизму отношения иметь - не должно и не имеет.

А классическое проявления оного (полиморфизма) в статическом смысле - действительно - шаблоны.

Добавлено через 4 минуты
Цитата Сообщение от _Mutex Посмотреть сообщение
Насколько я помню, может ошибаюсь компилятор всегда создает много вариантов функций на этапе компиляции, и в итоге они невидимы - затерты
компилятор создает ровно столько функций, сколько диктует ему контекст их использования.
В этом коде - 2 различных функции.

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>();
}
1
_Mutex
Заблокирован
28.05.2013, 13:33 #23
Цитата Сообщение от ITcrusader Посмотреть сообщение
Какое затирание)
Это - лишь пример некорректного использования языка. Для таких кейсов термин один: ошибка проектирования (См. Мейерс, Скотт: "никогда не переопределяйте в потомках не виртуальные методы", коль уж заговорили об "учите теорию").

Такое
1. выкашиваться из кода - должно.
2. приводить к неожиданным ошибкам - должно.
3. создавать трудности сопровождения - должно.
4. к полиморфизму отношения иметь - не должно и не имеет.

А классическое проявления оного (полиморфизма) в статическом смысле - действительно - шаблоны.

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


компилятор создает ровно столько функций, сколько диктует ему контекст их использования.
В твоем коде - 2 различных функции.
Пойди убей создателей википедии, с этим примером. Могу расстроить, это не приводит к ошибкам не в с++ не в c# и не должно вообще приводить к ошибкам. Если тебе нужен язык, который следит за тобой как за грудным ребенком, иди учи C# ,php.

Я прекрасно знаю, что в моем коде.
0
Croessmah
28.05.2013, 13:36
  #24

Не по теме:

Цитата Сообщение от _Mutex Посмотреть сообщение
Могу расстроить, это не приводит к ошибкам
Еще как приводит
Нет, в Hello world это, конечно же можно контролировать, но в большой программе можно отхватить при перекрытии функции-члена базового класса из-за того, что она именно перекрывается, а не переопределяется

0
_Mutex
Заблокирован
28.05.2013, 13:39 #25
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


Еще как приводит
Нет, в Hello world это, конечно же можно контролировать, но в большой программе можно отхватить при перекрытии функции-члена базового класса из-за того, что она именно перекрывается, а не переопределяется

Могу тебя расстроить, это логические ошибки, а не ошибки компиляции. А число логических ошибок зависит от коры головного мозга программиста.
0
Croessmah
28.05.2013, 13:40
  #26

Не по теме:

Цитата Сообщение от _Mutex Посмотреть сообщение
Могу тебя расстроить, это логические ошибки, а не ошибки компиляции.
А кто говорил о компиляции? Читайте внимательнее:
Цитата Сообщение от ITcrusader Посмотреть сообщение
Для таких кейсов термин один: ошибка проектирования

0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.05.2013, 13:41 #27
Цитата Сообщение от _Mutex Посмотреть сообщение
Пойди убей создателей википедии, с этим примером. Могу расстроить, это не приводит к ошибкам не в с++ не в c# и не должно вообще приводить к ошибкам. Если тебе нужен язык, который следит за тобой как за грудным ребенком, иди учи C# ,php.
Я прекрасно знаю, что в моем коде.
Должно быть прочел меня невнимательно:
я указал на ошибку проектирования, которая предшествует написанию такого кода. И она имеет место быть.
прекрасно знаешь, что в твоем коде? да, если ты работаешь над ним один на протяжении не более чем пары дней и это Hello, World.

Прекрасно знаешь, что в твоем коде? Скажи об этом паре десятков коллег, шарящих с тобой код, которые однажды таки узнают, где ты живешь)))

И да, какая википедия, нынче модно спецификацию C++ и примеры использования смотреть на лурке

P.S. ага, немного опоздал с постом)
0
_Mutex
Заблокирован
28.05.2013, 13:52 #28
Цитата Сообщение от ITcrusader Посмотреть сообщение
Должно быть прочел меня невнимательно:
я указал на ошибку проектирования, которая предшествует написанию такого кода. И она имеет место быть.
прекрасно знаешь, что в твоем коде? да, если ты работаешь над ним один на протяжении не более чем пары дней и это Hello, World.

Прекрасно знаешь, что в твоем коде? Скажи об этом паре десятков коллег, шарящих с тобой код, которые однажды таки узнают, где ты живешь)))

И да, какая википедия, нынче модно спецификацию C++ и примеры использования смотреть на лурке

P.S. ага, немного опоздал с постом)
Вообще то речь, шла о том, что я называю статический полиморфизм затиранием. Так напомню, вдруг понадобится.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


А кто говорил о компиляции? Читайте внимательнее:

Плавно перешли от шила на мыло. Речь темы статический полиморфизм. С точки зрения синтаксиса такой код абсолютно корректен, более того, он наглядно отображает то, что называется статическим полиморфизмом.

 Комментарий модератора 
Уважаемый, сбавьте экспрессию и сделайте акцент на Правила, а именно на пункт 3.1.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.05.2013, 13:55 #29
Цитата Сообщение от _Mutex Посмотреть сообщение
что называется статическим полиморфизмом.
То, что называется перекрытием и является частным случаем статического полиморфизма!
Цитата Сообщение от Croessmah Посмотреть сообщение
Это лишь одно из проявлений статического полиморфизма
Цитата Сообщение от ForEveR Посмотреть сообщение
То, что вы привели, является частным случаем статического полиморфизма.
0
_Mutex
Заблокирован
28.05.2013, 13:59 #30
Сейчас происходит высасывания из пальца.
Я написал принцип - я называю это затиранием, привел типичный пример.

И да, я в курсе, что компилятор генерирует ровно столько функций из шаблона функции сколько нужно, в соотв. с факт. типами.

Добавлено через 25 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
То, что называется перекрытием и является частным случаем статического полиморфизма!
это не перекрытие, это затирание.

Добавлено через 1 минуту
Все удачи клоуны.
0
28.05.2013, 13:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 13:59
Привет! Вот еще темы с ответами:

Что такое хэндлер файла? Что такое файловый указатель? - C++
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них - C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

Полиморфизм и наследование - что это? - C++
Объясните плз как можно проще что значит полиморфизм и наследование? Если второе я более менее понял то с 1 проблема. В интернете не смог...

ООП в С++ (наследование, инкапсуляция, полиморфизм, перегрузка операторов): что читать? - C++
Нужно освежить, подзабылось. Были у меня институцкие методички доцента Шеховцова. Хороша вещь, но потерялись. Нужны либо набор...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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