Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
#1

Пустые конструкторы и деструкторы - C++

13.09.2013, 12:37. Просмотров 982. Ответов 8
Метки нет (Все метки)

Скажите, есть-ли смысл прописывать пустые конструкторы и деструкторы?

C++
1
2
C_MainClass() {}
~C_MainClass() {}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2013, 12:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пустые конструкторы и деструкторы (C++):

Конструкторы и деструкторы - C++
Не понимаю, как закончить программу. Написала конструктор и деструктор, хотя он тут и не нужен по идее. Но по заданию сделала. А как...

Конструкторы и деструкторы - C++
Привет. Есть структура, содержащая 7 полей, в которые я ввожу значения с клавиатуры. Нужно используя конструкторы и деструкторы...

Конструкторы/Деструкторы - C++
Доброго времени суток! Есть проблемка... после выполнении программа вылетает (без ошибок, просто выбивает в Windows программирую на BC...

Конструкторы и деструкторы - C++
Помогите исправить программу. Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны...

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

Конструкторы и деструкторы - C++
Здравствуйте уважаемые программисты, помогите пожалуйста новичку? Не могу разобраться в программе, где смог там написал комментарий и то не...

8
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 12:39 #2
нет. только если у класса будут наследники и предполагается полиморфное использование, то тогда нужно определить деструктор виртуальным, даже если он будет пуст
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
13.09.2013, 12:50  [ТС] #3
Цитата Сообщение от Jupiter Посмотреть сообщение
нужно определить деструктор виртуальным
А как определить виртуальный деструктор, например, в данном примере:

A.h
C++
1
2
3
4
5
6
7
class A {
  public:
     A() {}
     ~A() {}
  protectet:
     // нечто
};
B.h
C++
1
2
3
class B: protected A {
     // нечто
};
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 12:52 #4
C++
1
2
3
4
5
6
7
class A {
  public:
     A() {}
     virtual ~A() {}
  protected:
     // нечто
};
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
13.09.2013, 12:55  [ТС] #5
А, точно Все-равно не очень понятно, зачем его делать виртуальным? Почему нельзя обойтись без него?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 12:59 #6
по умолчанию деструктор не виртуальный и при таком раскладе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
class A {
public:
    ~A() { std::cout << "A::~A" << std::endl; }
};
 
class B : public A {
public:
    ~B() { std::cout << "B::~B" << std::endl; }
};
 
int main()
{
    A* b = new B();
    delete b;
}
деструктор класса В не будет вызван
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
13.09.2013, 13:21  [ТС] #7
То есть если у нас есть класс, от которого наследуются, то для него всегда нужно создавать виртуальный деструктор, пусть даже пустой?

Добавлено через 5 минут
Или виртуальный деструктор надо прописывать в классе, который наследует?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 13:24 #8
Цитата Сообщение от dimakozyr Посмотреть сообщение
То есть если у нас есть класс, от которого наследуются, то для него всегда нужно создавать виртуальный деструктор, пусть даже пустой?
о боги, если преполагается использовать класс так как в посте №6, то да

Добавлено через 19 секунд
Цитата Сообщение от dimakozyr Посмотреть сообщение
Или виртуальный деструктор надо прописывать в классе, который наследует?
нет, в базовом классе
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 467
13.09.2013, 13:25  [ТС] #9
Все, понял, спасибо
0
13.09.2013, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2013, 13:25
Привет! Вот еще темы с ответами:

Конструкторы и деструкторы - C++
Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать: Для инициализации...

Конструкторы и деструкторы - C++
Код: #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; class complex { private: double im; double...

Конструкторы и деструкторы - C++
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных

Конструкторы и деструкторы - C++
Прочитал про конструкторы и деструкторы. Пишут что они нужны для инициализации переменных класса. Как они используются я понял, но не понял...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.