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

Композиционная связь между шаблонами. работа дестракторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В заголовоке окна кракозябры, да и на компонентах тоже http://www.cyberforum.ru/cpp-beginners/thread633353.html
Начал работу с примерами с firststep для MFC Столкнулся с проблеммой: Английский заголовок окна выводится на китайском. Как сделать английский? Система: Windows 7 SP 1 по русски. #include "afxwin.h" // MFC Основные и стандартные компоненты
C++ Ошибка в коде класс big нужен для хранения чисел в двоичном виде #include <iostream> using namespace std; class big { public: bool digit; http://www.cyberforum.ru/cpp-beginners/thread633348.html
Templates. (concrete inheritance). question to destructor implementation C++
Есть вот такой вот проект. Идея в том том что конкретный класс наследуется от темплейта. Как в таком случае ПРАВИЛЬНО + ГРАМОТНО реализовать дестрактор у конкретного класса ??? PointArray::PointArray(int size) : Array<Point>(size) { } PointArray::~PointArray()
Составить правило C++
как правильно составить условие для If выдать сообщения если введены не цифры
C++ string и функция _itow http://www.cyberforum.ru/cpp-beginners/thread633303.html
Всем привет! Ребята, не могу понять как мне использовать string и функцию _itow Вот код wstring positionclient = _itow( findclient.inumberhome,positionclient.c_str(),10 ); Пробовал использовать вот так, тоже не получается
C++ Виртуальные фукнции Здравствуйте, уважаемые форумчане! Не получается реализовать следующее: Есть базовый класс Array с полями: массив типа unsigned char и поле для хранения количества элементов у текущего объекта-массива. Реализовать в классе Array виртуальную функцию поэлементного сложения массивов. Теперь дочерние классы: Класс Hex содержит число в шестнадцатеричной системе исчисления, при этом оно вводится в... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
05.08.2012, 19:11     Композиционная связь между шаблонами. работа дестракторов
А в вот в данном случае — неправильно. Стек только содержит внутри себя массив. Он не связан отношениями наследования и т. п. Раз уж вы создали массив в конструкторе, то вам же его надо удалять в деструкторе. Компилятор не настолько сообразителен, он только освободит память, выделенную под тот указатель.

Так что правильный дестурктор такой:
C++
1
2
3
4
5
template<class Type>
    Stack<Type>::~Stack()                                       // Destructor
        {
             delete m_array;
        }
Вот теперь деструктор массива действительно вызовется.

Как вариант, можете не выделять массив для стека динамически. Тогда да, деструктор можно вообще не писать, пойдёт и вариант по умолчанию: компилятор вызовет деструктор массива как положено, вместе с деструкторами всех остальных полей. Надо только понимать, что деструктор указателя — это не то же самое, что деструктор объекта, на который этот указатель указывает.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru