Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Полиморфизм. Виртуальные методы


Автор: Syrex 14.2.2006, 14:53
Нужно тольковое объяснение с примерами или ссылки на литературу. А то ГОСы сдавать через 2 недели ((

Автор: chaos 14.2.2006, 15:28
читай книги!
Добавлено @ 15:30
http://forum.vingrad.ru/index.php?showtopic=33456

Автор: Syrex 14.2.2006, 15:38
А поконкретнее можно??

Автор: threef 14.2.2006, 15:52
Код

class A{
public :
  void voice()
  {
     print();  
  }
protected:
virtual void print()=0;//абстрактный метод
};
class B:public A
{
   void print(){ cout<<"b\n";}
};
class C:public A
{
   void print(){ cout<<"C\n";}
};
main()
{
   A *a;
   a=new B;
   a->voice();// B
   delete a;
   a=new C;
   a->voice();// C
   delete a;
}


Через обьект-указатель на общего предка вызываются методы потомков. Это для затравки.

Автор: Syrex 14.2.2006, 15:58
А объяснить?? Я Си практически не знаю - только начал изучать!

Автор: BreakPointMAN 14.2.2006, 17:12
Syrex, если бы у тебя были какие-то конкретные вопросы, это одно дело...
Ты же просишь объяснить тему, которая в хороших книгах по C++ раскрывается в нескольких главах. Сделать это "в двух словах" не получится, в особенности, если у тебя есть пробелы в знаниях по темам - что такое класс? что такое функция-член класса? что такое указатель на объект класса? что такое иерархии классов, наследование? Если ты имеешь представление об этих понятиях, тогда можно попытаться ответить на твой вопрос. Если нет, то лучше открой любую книгу по C++ и углубляйся в чтение.

Автор: MAKCim 14.2.2006, 22:02
Цитата

А объяснить?? Я Си практически не знаю - только начал изучать!

Если ты С не знаешь вообще будет трудно
может чего тут интересного будет
http://www.developing.ru/com/compilation_theory.html

Автор: BreakPointMAN 14.2.2006, 23:54
Цитата(Syrex @ 14.2.2006, 15:58 Найти цитируемый пост)
Я Си практически не знаю

Цитата(MAKCim @ 14.2.2006, 22:02 Найти цитируемый пост)
Если ты С не знаешь вообще

Ребята, в языке C не было классов, если что... Классы появились в языке C++.
Поэтому совершенно некорректно говорить о виртуальных функциях и полиморфизме в языке C...

Автор: MAKCim 15.2.2006, 08:26
Цитата

Ребята, в языке C не было классов, если что... Классы появились в языке C++.

я имел в виду, что без знания C, сразу C++ не пойдет, ИМХО. Необходимо будет еще останавливаться на указателях и прочих вещах, а не на классах и т. д

Автор: chipset 15.2.2006, 12:11
Страуструпа перед, после и во время еды. Три раза.

Автор: Syrex 15.2.2006, 13:37
Спасибо ВСЕМ. Пойду вникать!

Автор: BreakPointMAN 15.2.2006, 13:57
Цитата(chipset @ 15.2.2006, 12:11 Найти цитируемый пост)
Страуструпа перед, после и во время еды. Три раза.

Не согласен. Страуструп слишком сложен для новичка.

Автор: Syrex 15.2.2006, 15:11
Я не совсем чайник - знаю основы массивов, строк адресов и указателей
С Полиморфизмом и вирт. функциями я разобрался

А что такое виртуальные методы

Автор: BreakPointMAN 15.2.2006, 17:05
"Виртуальную функцию-член иногда называют методом." © Страуструп
Да и не только виртуальные, но и обычные функции-члены методами называют.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)