Java и C# поддерживают понятие классов, которые не могут использоваться в качестве базовых классов с заключительными и изолированными ключевыми словами. В C++ однако нет никакого хорошего способа препятствовать тому, чтобы класс был получен из который...
Из-за известных проблем с вызовом виртуальных методов из конструкторов и деструкторов, я обычно заканчиваю с классами, которым нужен метод заключительной установки, который назовут сразу после их...
Я знаю, что это - хорошая практика для объявления виртуальных деструкторов для базовых классов в C++, но всегда важно объявить виртуальные деструкторы даже для абстрактных классов, которые функционируют как интерфейсы?...
Нам нужен виртуальный деструктор, если мои классы не выделяют памяти динамично? например, класс A {частный: интервал a; интервал b; общественность: (); ~A ();}; класс B:...
У меня есть четкое понимание большинства ОО-теорий, но меня смущает одна вещь - виртуальные деструкторы. Я думал, что деструктор всегда называют независимо от того, что и для каждого объекта в ...
Если у меня есть базовый класс с виртуальным деструктором. Имеет производный класс для объявления виртуального деструктора также? основа класса {общественность: виртуальный ~base () {}}; класс получен: основа {общественность: виртуальный ~...
У меня есть большой набор наследованных классов (критерии), которые наследовались базовому классу (критерий). Вот является критерий класса кода критерия {общественностью: виртуальный неподписанный __ int32 getPriorityClass ()...
На этом, вероятно, спросили прежде Так, но я не мог найти подобный вопрос. Рассмотрите следующую иерархию классов: класс BritneySpears {общественность: виртуальный ~BritneySpears ();};...
У меня есть структура IMyInterface {виртуальный method1 () = 0; виртуальный method2 () = 0;}; GCC настаивает, чтобы у меня была структура IMyInterface {виртуальный method1 () = 0; виртуальный method2 () = 0; виртуальный ~...
Я не знал Ответ на этот вопрос можно найти в C ++ Faq lite: Как мне определить базовый класс, чтобы каждый наследующий его класс определял деструктор? Я попытался запустить эту программу struct VDtor {...
В этом ответе Райан напрямую вызывает виртуальный деструктор. Я протестировал код в VS2010, и он правильно вызывает все деструкторы (проверено с помощью операторов регистрации). Действительно ли это действительно так? Что ...
В этих слайдах о стандарте C ++ 11/14 на слайде 15 автор пишет, что «многие классические правила кодирования больше не применимы» в C ++ 11. Он предлагает список из трех примеров, и я согласен с ...
У меня есть этот код: class Class {
public: virtual ~ Class () {}
}; int main () {{1} } {Class * object = new Class (); delete object;
} который я компилирую с Visual C ++ 10 и получаю эту разборку для ...
Как я знаю, любой класс, который должен иметь подклассы, должен быть объявлен с виртуальным деструктором, чтобы экземпляры класса могли быть уничтожены должным образом при обращении к ним через указатели. Но почему это ...
#include
используя пространство имен std;
база класса
{int a; public: base () {a = 0;}}; class derv: public base {int b; общедоступные: derv () {b = 1;}}; int main () {base * pb = ...
Предположим, у меня есть этот код class Base {public: int getVal (); private: int a, b;
}; класс Derived :: public Base {public: void printVal ();
}; int main () {Base * b = ...
Почему C ++ не делает деструкторы виртуальные по умолчанию для классов, у которых есть хотя бы одна виртуальная функция? В этом случае добавление виртуального деструктора мне ничего не стоит, а его отсутствие - (почти? ...
В этом примере ниже показано, как предотвратить копирование производного класса. Он основан на базовом классе, в котором как конструктор копирования, так и оператор присваивания копии объявлены закрытыми. class ...
Я только что обновил GCC с (я думаю) 4.5.6 до 4.6.1, под Windows, MinGW. Внезапно мой базовый класс NonInstantiable (от которого вы наследуете с public virtual для предотвращения инстанцирования) отказывается работать ...
Этот вопрос отличается от "Когда/почему я должен использовать виртуальный деструктор?". struct B { virtual void foo (); ~B() {} // <--- не виртуальный
};
struct D : B { virtual void foo (); ~D() {}
};...
У меня есть два класса: класс A {
общедоступные: виртуальная void somefunction () = 0;
}; class B: public A {
общедоступный: B (); ~ B (); void somefunction ();
}; B :: B () {} void B :: somefunction () {// ...
Я хочу наследовать от std::map, но, насколько мне известно, у std::map нет виртуального деструктора. Следовательно, возможно ли вызвать деструктор std::map явно в моем деструкторе, чтобы обеспечить правильное...
Поскольку у boost :: / std :: shared_ptr есть преимущество удаления типа со стираниями, вы можете делать приятные вещи, например #include typedef std :: shared_ptr gc_ptr; int main () {gc_ptr ...
Я нашел этот код на веб-сайте #include , используя пространство имен std; struct Base
{Base () {cout << "База" << ""; } virtual ~ Base () {cout << "~ Base" << ...
I tried the following code on gcc 4.4.5. If the member 'data' is not present, the code executes fine, but in its presence, it crashes. It also doesn't crash when the derived class' dtor is not ...
У меня есть сценарий, в котором я пишу довольно глубокий объектно-ориентированный код с несколькими уровнями абстрактных базовых классов, и мне интересно, нужно ли мне явно объявить деструктор для каждого. ...