Подтвердить что ты не робот

С++, защищенная абстрактная виртуальная база чистого виртуального частного деструктора

Итак, я нашел эту цитату сегодня, может ли кто-нибудь объяснить?

"Если вы считаете, что С++ не слишком сложный, просто что такое защищенная абстрактная виртуальная база, чистый виртуальный частный деструктор и когда вы в последний раз нуждались в ней? - Том Каргилл "

4b9b3361

Ответ 1

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

 class Base
 {
    private:
        virtual ~Base() = 0;   /* A */
 };

 class Derived : protected virtual Base
 {
    private:
     ~Derived () {.......}    /* B */
 };

С точки зрения тега B линия в теге A является "защищенным абстрактным виртуальным базовым чистым виртуальным частным деструктором",

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

Ответ 2

Не уверен в исходном контексте, но я предполагаю, что кто-то утверждает, что С++ менее сложна, чем язык, такой как Java. Том указывает, что у С++ есть достаточно возможностей, чтобы вы могли легко сделать конструкцию, которая ОЧЕНЬ сложна.

Ответ 3

Эти слова, похоже, имеют смысл, но на самом деле.

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

Следует отметить, что каждая ситуация уникальна, и вы строите иерархию и деструкторы классов, как того требует ситуация. Вызов языка сложнее, потому что он предоставляет средство глупо. Это как сказать, что является предметом частного наследования. Да, обычно вы не собираетесь использовать его, но будет случай, когда это приятно иметь.

И я не думаю о:

защищенный абстрактный виртуальный базовый чистый виртуальный частный деструктор, и когда вы в последний раз нуждались в нем

Я думаю:

  • Мой класс абстрактный
  • Деструктор должен быть виртуальным.
  • Но мне не нужна реализация, поэтому ее чистый
  • Я буду использовать защищенное наследование

Ответ 4

В принципе, он просто собрал кучу слов и собрал их вместе, не понимая, что они действительно ссылаются на разные вещи или часто одно и то же.

protected abstract virtual base

Довольно просто.

class Base { // BASE
    virtual something() = 0; // ABSTRACT
};
class Derived : protected virtual Base { // PROTECTED VIRTUAL
};

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

Также довольно просто.

class Base { // BASE
private:
    virtual ~Base() = 0; // pure virtual, private, destructor
};
class Derived : Base {
};

Конечно, чистый виртуальный те же, что и абстрактный.

Это довольно полная и полная гипербола, написанная кем-то, кто не знает, о чем он говорит.