| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Что означает virtual void func() = 0; |
| Автор: saint 27.11.2005, 18:14 | ||
Подскажите плз что означает данная конструкция:
Меня интересует часть " = 0". В каком разделе описания языка искать ответ на данный вопрос. |
| Автор: Aleksandor 27.11.2005, 18:17 |
| Виртуальная функция, то есть неопределенная в данном классе. |
| Автор: DeadSoul 27.11.2005, 18:32 |
| saint, 1. данная функция является виртуальной 2. данная функция не имеет реализации в данном классе, т.е. она обязаны быть переопределена в производных классах |
| Автор: LPBOY 27.11.2005, 18:42 | ||||||
| Это чисто виртуальная функция. Класс в котором объявлена чисто виртуальная функция является абстрактным, т.е. экземпляры этого класса создавать нельзя (указатели и ссылки, можно). Чисто виртуальные функции могут не иметь определения и виртуально вызывать их нельзя. Чисто виртуальные функции наследуются, поэтому в производном классе ее нужно переопределить, иначе она останется чисто виртуальной, и производный класс тоже станет абстрактным. Классы с чисто виртуальными функциями используются, в основном, в качестве интерфейсов (т.е. содержат только функции), для того чтобы наследовать от них другие классы. Дополнительно смотри Google или Страуструпа
Виртуальная функция может быть и определенной. Но ее определение должно находится за пределами определения класса и вызывать ее можно только статически.
|
| Автор: BreakPointMAN 27.11.2005, 18:44 |
| Чисто виртуальная функция это (pure virtual function). Как правильно сказал DeadSoul - это: 1) виртуальная функция, которая 2) не имеет реализации в данном классе. Класс, в котором есть чисто виртуальные функции, называется абстрактным классом. Невозможно создавать объекты абстрактного класса. Все чисто виртуальные функции должны быть определены в производных классах. Как правило, абстрактные классы являются базой для других классов, предоставляя интерфейс, с полным отсутствием деталей реализации. |
| Автор: LPBOY 27.11.2005, 18:45 | ||
Может иметь! |
| Автор: DeadSoul 27.11.2005, 19:24 | ||
LPBOY, согласен. Но новичку не надо этим забивать голову |
| Автор: saint 27.11.2005, 20:16 | ||
ок. всем огромная благодарность за помощь
Ну эт если новичок в программировании вообще, а если только в С++, то именно этим забивать голову и следует |