Вопросы по теме 'virtual-destructor'
Когда не следует использовать виртуальные деструкторы?
Есть ли веская причина не объявлять виртуальный деструктор для класса? В каких случаях лучше не писать?
29846 просмотров
schedule
15.03.2024
Должен ли каждый класс иметь виртуальный деструктор?
Java и C # поддерживают понятие классов, которые нельзя использовать в качестве базовых классов с ключевыми словами final и sealed . В C ++, однако, нет хорошего способа предотвратить создание класса, что ставит автора класса перед дилеммой:...
46410 просмотров
schedule
15.11.2022
виртуальный деструктор не работает с массивом
Я нашел этот код на веб-сайте .
#include <iostream>
using namespace std;
struct Base
{
Base() { cout << "Base" << " "; }
virtual ~Base() { cout << "~Base" << endl; }
int i;
};
struct Der : public Base...
662 просмотров
schedule
27.06.2022
Возможна ли утечка памяти без виртуального деструктора?
#include <iostream>
using namespace std;
class base
{
int a;
public:
base() {a =0;}
};
class derv :public base
{
int b;
public:
derv() {b =1;}
};
int main()
{
base *pb = new derv();
delete pb;
}
У меня нет...
4456 просмотров
schedule
15.01.2023
Получение классов без виртуального деструктора в стороннем программном обеспечении
Мне предоставляется сторонняя библиотека с ее заголовком для использования. Теперь в этой библиотеке есть класс Base. Проблема с этим классом в том, что у него нет виртуального деструктора. Теперь, поскольку у меня нет стороннего кода, я не могу...
373 просмотров
schedule
12.05.2022
Есть ли вред от виртуального деструктора без виртуального метода?
Во время моего проектирования иногда у меня возникает ситуация, когда я добавляю/или удаляю виртуальные методы. Эмпирическое правило, которое я знаю, заключается в том, что у меня должен быть виртуальный деструктор, как только у меня будут...
245 просмотров
schedule
09.11.2023
Правильно ли работает удаление с полиморфизмом?
BaseClass * p = new DerivedClass();
delete p;
Я знаю, что вторая строка вызовет деструктор базового класса, если у него нет виртуального деструктора, и деструктора производного класса, если он есть, но delete должным образом освободит память...
3206 просмотров
schedule
06.04.2022
Отсутствие виртуального деструктора, когда единственный производный класс не добавляет дополнительных переменных
У меня есть класс Literal, который на самом деле является оболочкой для (const int). Я хочу иметь второй класс PositiveLiteral, который наследуется от Literal, но имеет конструктор, утверждающий, что его значение положительное.
class Literal {...
308 просмотров
schedule
16.05.2024
C++: чистый виртуальный деструктор в абстрактном классе с членами
Я только начал изучать С++ и наткнулся на эту проблему. Я написал этот абстрактный класс с чистым виртуальным деструктором:
#ifndef ANIMAL
#define ANIMAL
#include <string>
using namespace std;
class Animal {
public:
Animal();...
1814 просмотров
schedule
01.06.2022
Что произойдет, если я изменю деструктор одного базового класса с невиртуального на виртуальный?
Я столкнулся с базовым классом, деструктор которого не является виртуальным, хотя в базовом классе есть 1 виртуальная функция fv() . Этот базовый класс также имеет множество подклассов. Многие из этих подклассов определяют свои собственные fv() ....
1778 просмотров
schedule
07.02.2023
Что происходит при удалении полиморфного объекта без виртуального деструктора?
В следующем примере b – это тип полиморфного указателя, статический тип которого — Base* , а динамический тип — Derived* .
struct Base
{
virtual void f();
};
struct Derived : Base
{
};
int main()
{
Base *b = new Derived();
//...
773 просмотров
schedule
31.03.2023
Как компилятор обрабатывает вызовы деструктора базового класса в производном деструкторе?
Просто из любопытства я попытался сделать что-то вроде приведенного ниже примера, чтобы увидеть, выдает ли мне компилятор предупреждение или около того вместо вызова бесконечного цикла, который заканчивается переполнением стека. Я подумал, может...
104 просмотров
schedule
14.10.2022
Что мне нужно, чтобы вернуть объект с элементом unique_ptr?
Допустим, у меня есть этот объект:
struct foo {
std::unique_ptr<int> mem;
virtual ~foo() = default;
};
Я больше не могу возвращать объект foo , созданный в функции:
foo make_foo() {
foo result;
result.mem =...
544 просмотров
schedule
24.11.2023