Лучшие pure-virtual вопросы ИТ разработчиков

  • 99 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Откуда происходят сбои «чистого вызова виртуальной функции»?

Иногда я замечаю программы, которые вылетают на моем компьютере с ошибкой: «чисто виртуальный вызов функции». Как эти программы даже компилируются, когда объект не может быть создан из абстрактного класса?

Задан 19 Sep 2008, 04:09 от Brian R. Bondy
  • 6 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

Перегрузка чисто виртуальной функции

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

Задан 05 Apr 2013, 06:52 от Ale
  • 1 голос
  • 1 ответ
  • 0 просмотров
1 ответ

чисто виртуальная функция и абстрактный класс

У меня есть следующие классы, Base и Derived, и когда я компилирую, компилятор жалуется, что он не может создать экземпляр DLog, потому что он абстрактный.Мо...

Задан 06 Jul 2010, 11:58 от Tony The Lion
  • 142 голосов
  • 12 ответов
  • 0 просмотров
12 ответов

Зачем нам нужен чистый виртуальный деструктор в C ++?

Я понимаю необходимость виртуального деструктора. Но зачем нам чистый виртуальный деструктор? В одной из статей C ++ автор упоминал, что мы используем чистый...

Задан 03 Aug 2009, 05:51 от MottiMark
  • 21 голос
  • 0 ответов
  • 0 просмотров
0 ответов

@StoryTeller Он не претендует на семантическую идентичность. Он отмечен как возможная (безопасная) альтернатива, которая хороша во многих ситуациях. (Я постоянно использую это)

отрим следующий стандартный пример CRTP: #include <iostream> template<class Derived> struct Base { void f() { static_cast<Derived *>(this)->f(); } void g() { static_cast<Derived *>(this)->g(); } }; struct Foo : public Base<Foo> { void f() { ...

Задан 18 Jul 2017, 09:50 от uranix
  • 28 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

При каких обстоятельствах выгодно давать реализацию чисто виртуальной функции?

В C ++ допустимо давать реализацию чисто виртуальной функции: class C { public: virtual int f() = 0; }; int C::f() { return 0; }Зачем тебе это делать? Связанный вопрос:C ++ faq ...

Задан 10 Jun 2009, 19:01 от Tobias
  • 32 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

вызов чистой виртуальной функции из конструктора базового класса

У меня есть базовый класс MyBase, который содержит чисто виртуальную функцию: void PrintStartMessage() = 0 Я хочу, чтобы каждый производный класс вызывал его в своем конструкторе тогда я положил его в базовый класс (MyBase) конструктор class ...

Задан 25 Dec 2011, 15:10 от herzl shemuelian
  • 58 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

 это неверно

е виртуальные функции - это те функции-члены, которые являются виртуальными и имеютчистый спецификатор (

Задан 13 Nov 2010, 21:08 от Armen Tsirunyan
  • 14 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

С ++ 11 Делегированный конструктор Чистый виртуальный вызов методов и функций - опасность?

Не дубликатВызов виртуальной функции и чисто виртуальной функции из конструктора [https://stackoverflow.com/questions/8642363/invoking-virtual-function-and-pure-virtual-function-from-a-constructor] : Предыдущий вопрос относится к C ++ 03, а не к ...

Задан 04 Feb 2013, 06:18 от e.s. kohen
  • 13 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Есть ли в PHP чисто виртуальные функции, как в C ++?

Я бы подумал, что многие люди задались бы вопросом, возможно ли это, но я не могу найти повторяющихся вопросов ... поправьте меня. Я просто хочу знать, предлагает ли PHP чисто виртуальные функции. Я хочу следующее class Parent { // no ...

Задан 29 Sep 2011, 17:00 от ale
  • 2 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

пецификатор @const исчезает из чисто виртуальной функции [duplicate]

На этот вопрос уже есть ответ: Const верхнего уровня не влияет на сигнатуру функции [/questions/17208570/top-level-const-doesnt-influence-a-function-signature] 7 ответов Использование gcc версии 4.8.2: Я сталкиваюсь с проблемой, когда ...

Задан 18 Jun 2014, 16:30 от Kovaz
  • 5 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

Чистый вызов виртуальной функции из базового ктора

Рассмотрим следующий пример кода: #include <iostream> using namespace std; class base { public: base() { bar(); //Line1 this->bar(); //Line2 base *bptr = this; bptr->bar(); //Line3 ((base*)(this))->bar(); //Line4 } virtual void bar() = 0; }; ...

Задан 09 Feb 2012, 14:01 от nitin_cherian
  • 16 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Чистый виртуальный вызов из конструктора и деструктора

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

Задан 28 Dec 2011, 04:36 от nitin_cherian
  • 34 голосов
  • 8 ответов
  • 0 просмотров
8 ответов

Чистые виртуальные функции в C ++ 11

В C ++ 98 нулевой указатель был представлен литералом0 (или фактически любое константное выражение, значение которого было равно нулю). В C ++ 11 мы предпочитаемnullptr вместо. Но это не работает для чисто виртуальных функций: struct X { virtual ...

Задан 31 Dec 2013, 17:51 от fredoverflow
  • 15 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

C ++ абстрактный класс без чисто виртуальных функций?

У меня есть базовый класс class ShapeF { public: ShapeF(); virtual ~ShapeF(); inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); } protected: Vector2 mPosition; }Очевидно, с каким-то пропущенным кодом, но вы ...

Задан 31 Jan 2013, 17:32 от MintyAnt
  • 24 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Почему gcc и clang позволяют мне создавать абстрактный класс?

Следующий код компилируется в широком диапазоне версий gcc и clang - при компиляции и запуске с gcc 5.3.1 он печатаетА ()затем прерывается с чистой ошибкой в...

Задан 04 May 2016, 01:46 от Matt
  • 41 голос
  • 6 ответов
  • 0 просмотров
6 ответов

"В Objective C. нет ключевого слова" Virtual "."

у пойти туда. Если серьезно, то как можно реализовать чисто виртуальный метод «Apple»? Используете ли вы протокол с базовым классом и генерируете исключения для этих методов?

Задан 07 Mar 2011, 16:19 от Chris
  • 41 голос
  • 3 ответа
  • 0 просмотров
3 ответа

Благодарю. Теперь я понимаю.

сматривал источники (предпочитают не называть) GUI Toolkit, который обернул Windows API, когда я нашел следующее определение функции в классе окна: virtual LRESULT CALLBACK wndProc (HWND, UINT, WPARAM, LPARAM) = 0;Что здесь происходит? Как вы ...

Задан 09 Jul 2011, 11:08 от ApprenticeHacker
  • 14 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Должен ли деструктор абстрактного класса быть чисто виртуальным?

Я думаю, что одного виртуального обычно достаточно.Есть ли другая причина сделать его чисто виртуальным, чем заставлять производные классы реализовывать свой...

Задан 17 Aug 2010, 13:45 от spc-mrn