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

Абстрактный класс и использование деструктора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ООП + полиморфизм = wtf? http://www.cyberforum.ru/cpp-beginners/thread345905.html
Есть: Класс A - отец Класс Б - дочерний Класс Ц - дочерный, наследуеться от А(сестра Б) Есть массив типа А, с названием Mass. Он хранит в себе объекты классов Б и Ц. в классе Б есть функция F(). в классе Ц есть функция F() (отличающаяся функционалом).
C++ Сортировка динамических структур методом шелла Дайте пример сортировки динамических структур методом шелла... http://www.cyberforum.ru/cpp-beginners/thread345904.html
C++ Степень двойки
Изучаю программирование. Попытался решить известную задачу. Программа компилируется, но если ввести к примеру 8 она выдает "no". В чем я ошибся? #include<iostream> using namespace std; int main() { int n,k; int flag=false; cout<<"enter a number "; cin>>n;
C++ Вывод массива.
Программа работает, но код... запутаться можно. Есть ли способы попроще? Заранее спасибо. #include <iostream> #include <ctime> using namespace std; int main () { int mass={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
C++ friend не видит приватные поля http://www.cyberforum.ru/cpp-beginners/thread345860.html
Всем привет. Возникла проблема. Есть такой header #include <windows.h> #include <windowsx.h> class Intercept; class Dot { private: FLOAT X,Y,Z;
C++ Помогите с компилятором Вечер добрый... Помогите советом. Не могу скопилировать программу. Использую для этого Dev C++. Когда пробую компилировать, выходит куча ошибок. Мол не найдены такие то сякие библиотеки и так далее.. Как можно решить эту проблему? Может использовать какой нибудь другой компилятор? Чем пользуются профессионалы? подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.08.2011, 22:53     Абстрактный класс и использование деструктора
Сыроежка, именно "Каждый должен отвечать за то, чем он владеет и не лезть туда, где начинается компетенция других." Сие определяет автор. А коль скоро так, то почему бы не сделать абстрактный класс сугубо интерфейсным, не возлагая на него других функций, как-то: выделения памяти и освобождения памяти.

Последнее рационально и вот по какой причине: производные классы могут создаваться, например в цикле, в функции какой-нибудь и прочая. А тогда память, отведённая под вектора их конструкторах будет освобождаться деструкторами при выходе из области видимости. Довольно стройное на мой взгляд решение освобождения памяти.
Иначе, если память выделить в базовом классе (в нашем случае ABCG), так и будет "висеть", пока или программа не закончится или... Или как-то принудительно не будет вызван деструктор базового класса. Извините.

Добавлено через 1 минуту
И вообще хочется увидеть уже main

Добавлено через 10 минут
И ещё одно: челу позарез необходим именно абстрактный класс. Ладно, щас с ходу пытался ответить на вопрос и не смог: а как вообще в абстрактном классе может быть реализован какой-либо код? Объект этого класса создан быт не может. Значит, о вызове конструктора можно забыть. Ну и функции методы, содержащие исполнимый код (в данном случае, напомню, речь идёт о выделении памяти) определены и вызваны быть не могут. Так что если нужен именно абстрактный кллас, то всё это надо делегировать производным (что и было сделано). Извините если что не так.
 
Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru