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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.93
Mar-12
 Аватар для Mar-12
-21 / 5 / 1
Регистрация: 14.03.2013
Сообщений: 131
26.05.2013, 20:11     что такое статический полиморфизм? #1
что такое статический полиморфизм?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 20:11     что такое статический полиморфизм?
Посмотрите здесь:

что такое полиморфизм C++
C++ Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
Что такое перегрузка оператора? Что у меня в коде за ошибка? C++
Полиморфизм и наследование - что это? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_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>();
}
очень просто. Одна функция вызвана, другие затерты. Насколько я помню, может ошибаюсь компилятор всегда создает много вариантов функций на этапе компиляции, и в итоге они невидимы - затерты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ITcrusader
Эксперт C++
 Аватар для 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>();
}
_Mutex
Заблокирован
28.05.2013, 13:33     что такое статический полиморфизм? #23
Цитата Сообщение от ITcrusader Посмотреть сообщение
Какое затирание)
Это - лишь пример некорректного использования языка. Для таких кейсов термин один: ошибка проектирования (См. Мейерс, Скотт: "никогда не переопределяйте в потомках не виртуальные методы", коль уж заговорили об "учите теорию").

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

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

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


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

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

Не по теме:

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

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

Не по теме:


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

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

Не по теме:

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

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

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

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

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

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

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

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

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

Не по теме:


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

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

 Комментарий модератора 
Уважаемый, сбавьте экспрессию и сделайте акцент на Правила, а именно на пункт 3.1.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
28.05.2013, 13:55     что такое статический полиморфизм? #29
Цитата Сообщение от _Mutex Посмотреть сообщение
что называется статическим полиморфизмом.
То, что называется перекрытием и является частным случаем статического полиморфизма!
Цитата Сообщение от Croessmah Посмотреть сообщение
Это лишь одно из проявлений статического полиморфизма
Цитата Сообщение от ForEveR Посмотреть сообщение
То, что вы привели, является частным случаем статического полиморфизма.
_Mutex
Заблокирован
28.05.2013, 13:59     что такое статический полиморфизм? #30
Сейчас происходит высасывания из пальца.
Я написал принцип - я называю это затиранием, привел типичный пример.

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

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

Добавлено через 1 минуту
Все удачи клоуны.
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.05.2013, 14:00     что такое статический полиморфизм? #31
Цитата Сообщение от _Mutex Посмотреть сообщение
Если не соображаешь, тебе писали - учи C# php.
Некоторые склонны относить эти языки к разряду "для слабоумных", смешно.
Croessmah
28.05.2013, 14:00
  #32

Не по теме:

Цитата Сообщение от _Mutex Посмотреть сообщение
это не перекрытие, это затирание.
ну ну, оставайтесь при своем мнении. Может так и на автомобиле полетите

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 00:21     что такое статический полиморфизм?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
29.05.2013, 00:21     что такое статический полиморфизм? #33
По поводу термина "затирание" - никогда не слышал. Такая штука у Саттера в русском переводе описана как "сокрытие имен", оно же names hiding. слово "затирание" тут совсем плохо подходит.
Yandex
Объявления
29.05.2013, 00:21     что такое статический полиморфизм?
Ответ Создать тему
Опции темы

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