Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
13.09.2013, 12:37     Пустые конструкторы и деструкторы #1
Скажите, есть-ли смысл прописывать пустые конструкторы и деструкторы?

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

C++ Конструкторы/Деструкторы
C++ Конструкторы и деструкторы
C++ Классы. Конструкторы. Деструкторы
C++ Конструкторы и деструкторы
C++ Конструкторы и деструкторы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 12:39     Пустые конструкторы и деструкторы #2
нет. только если у класса будут наследники и предполагается полиморфное использование, то тогда нужно определить деструктор виртуальным, даже если он будет пуст
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
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 {
     // нечто
};
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 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:
     // нечто
};
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
13.09.2013, 12:55  [ТС]     Пустые конструкторы и деструкторы #5
А, точно Все-равно не очень понятно, зачем его делать виртуальным? Почему нельзя обойтись без него?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 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;
}
деструктор класса В не будет вызван
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
13.09.2013, 13:21  [ТС]     Пустые конструкторы и деструкторы #7
То есть если у нас есть класс, от которого наследуются, то для него всегда нужно создавать виртуальный деструктор, пусть даже пустой?

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

Добавлено через 19 секунд
Цитата Сообщение от dimakozyr Посмотреть сообщение
Или виртуальный деструктор надо прописывать в классе, который наследует?
нет, в базовом классе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2013, 13:25     Пустые конструкторы и деструкторы
Еще ссылки по теме:

Конструкторы и деструкторы C++
C++ Закрыты конструкторы и деструкторы!
Конструкторы и деструкторы C++

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

Или воспользуйтесь поиском по форуму:
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
13.09.2013, 13:25  [ТС]     Пустые конструкторы и деструкторы #9
Все, понял, спасибо
Yandex
Объявления
13.09.2013, 13:25     Пустые конструкторы и деструкторы
Ответ Создать тему
Опции темы

Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru