Обсуждение:Виртуальный метод

message: вообще, стоит ли такие темы отрывать от языков? или переписать так, чтобы пдходило ко всем мыслимым /немыслимым языкам, или вернуть в с++. 217.25.194.150 8 июля 2005 12:28 (UTC)
Всегда бесило когда простейшую вещь растягивали на целые тома.Прочитав это творение я с некоторым трудом понял что тут написано, несмотря на то что , и так это знал. Что будет с человеком пришедшим выяснить что к чему, боюсь представить. Сократить бы раз в несколько, или переработать по нормальной схеме. Типа первый абзац в 10 строк - коротко и по существу, а делее уже уточнения и прибамбасы.
replies: text: Не забывай, что для тебя эта вещь «простейшая» именно потому, что ты «и так это знал».  По моему глубокому убеждению, для 99% людей программирование не является простым (или не являлось бы, если бы они им занялись).  По сравнению с разманными на 1000 страниц «талмудами» для «чайников», эта статья — образец лаконичности.

text: Если хочешь что-то улучшить — валяй.
replies: text: :: doublep 10:07, 11 июля 2005 (UTC)
thread_title: Untitled

message: И текст. И код. Например, вместо:
class Ancestor
    {
    public:
      virtual void  function1 () { cout << "Ancestor::function1()" << endl; }
      void          function2 () { cout << "Ancestor::function2()" << endl; }
    };
написать
class A
    {
    public:
      virtual void  f1 () { cout << "A::f1()" << endl; }
      void          f2 () { cout << "A::f2()" << endl; }
    };
... Хотя бы? 217.25.194.150 11:14, 9 августа 2005 (UTC)
replies: text: Это называется не упрощением а «obfuscation».  Если еще functionN() <=> fN() понятно, то зачем убирать осмысленное слово (пусть и английское) и ставить вместо него просто букву?  «Длинные мнемоничные идентификаторы».  — doublep 13:40, 10 августа 2005 (UTC)
replies: text: : Чтобы в глазах не рябило. Если Вы - программист, скажите - Вы, что, ВОТ ТАК вот свои программы пишете? С «длинными мнемоничными идентификаторами»? 217.25.194.150 10:45, 3 ноября 2005 (UTC)
replies: text: :: Именно так.  Если интересно то исходники (чистый C, правда) есть на , сорри за невольную рекламу.  Я согласен что в программе как выше мнемоничность особого значения не имеет, но в большом проекте, по-моему, без нее никуда.  — doublep 12:14, 3 ноября 2005 (UTC)
replies: text: ::: Блин, ну придумали же контекстные подсказки зачем-то...
replies: text: :::: Это к чему, я не понял.  — doublep 18:47, 10 ноября 2005 (UTC)
217.25.194.150

text: Вот текст точно неплохо бы упростить, только желательно без потери содержания.  Если есть идеи, их можно смело реализовывать.  Редактировать может каждый.  — doublep 13:43, 10 августа 2005 (UTC)
thread_title:  Как насчёт упростить 

message: В статье написано:
«В некоторых языках программирования, например в Java, все функции-члены класса, кроме статических, являются виртуальными». А какие ещё бывают, кроме статических и виртуальных? SergV 15:13, 9 августа 2005 (UTC)
replies: text: Бывают, э…, нестатические невиртуальные, вот! :) Пример (C++):
       class Foo
       {
       public:
         // конструктор
         Foo ();
         // статическая функция
         static  void  static_function ();
         // виртуальная функция
         virtual  void  virtual_function ();
         // нестатическая невиртуальная функция
         void  plain_function ();
       };

text: В Java такие функции могут быть эмулированы, если поставить у функции аттрибут final прямо в том классе, где она объявлена.  Хотя это не совсем то.

text: Приводить примеры лень, но такие функции полезны и имеют право на существование.  Как минимум, существование невиртуальных (и нестатических) функций позволяет добиться того, что sizeof (std::string) == sizeof (void *), так как у std::string нет виртуальных функций и, соответственно, в объектах не хранится указатель на таблицу.
replies: text: :: doublep 13:25, 10 августа 2005 (UTC)

text: : Кстати, в примере из статьи, function2() нестатическая и невиртуальная.  — doublep 13:29, 10 августа 2005 (UTC)
replies: text: :: Ага, похоже, я с прямым углом перепутал :) Спасибо. SergV 16:19, 10 августа 2005 (UTC)

text: „Класс, содержащий хотя бы один такой метод, также называют абстрактным.“ - не совсем точное утверждение. Не уверен насчет других языков и платформ, но в C# класс, не содержащий абстрактных членов, тоже может быть абстрактным. Хорошо известный пример - System.ValueType. Nikov 12:36, 9 июля 2007 (UTC)
replies: text: : Да, действительно.  В Java тоже.  Я немного подкорректировал текст статьи, сейчас еще дополню статью абстрактный класс.  — doublep 12:52, 9 июля 2007 (UTC)
Хорошая статья. Особенно порадовало, что кроме примеров на C++ есть еще и примеры на моем родном языке - паскале
217.195.78.149 14:33, 19 февраля 2008 (UTC)Legat
thread_title:  Вопрос 

message: В данном случае виртуальный — калька с англ. virtual, что в данном случае означает фактический.
Это желательно добавить, но не знаю, куда воткнуть.
--79.164.42.202 20:33, 7 декабря 2009 (UTC)
* Добавил. Лучше поздно, чем никогда) Yanpas (обс) 08:04, 21 октября 2016 (UTC)
thread_title:  Перевод '''virtual''' 

message: В некоторых языках программирования, например в Java, нет понятия виртуального метода
Что? В Java все методы по-умолчанию являются виртуальными. В противном случае надо писать final перед методом, чтобы в последующем наследовании нельзя было переопределить этот метод. 
Таким образом всё-таки виртуальные функции есть в языке, даже если по-умолчанию, выявляется их присутствие как раз дополнительным ключевым словом, которое отключает возможность переопределения.
--Igroman 11:44, 27 мая 2011 (UTC)
replies: text: В начале статьи дано определение, под которое методы в Java полностью попадают. DeLZeX 12:50, 30 августа 2011 (UTC)
thread_title:  Виртуальные функции 

message: В php аналогом виртуального метода может быть не только позднее статическое связывание.
Если заменить строчку echo static::a(); на echo $this->a(); , то тоже выведется вода, огонь
 83.69.212.66 09:19, 11 апреля 2014 (UTC) Dean300
thread_title:  Аналог виртуальных методов в php. Пример из статьи