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

Деструктор и наследование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поменять первый элемент со вторым,третий с четвертым и т.д http://www.cyberforum.ru/cpp-beginners/thread800575.html
Дан массив из четного числа элементов.Поменять первый элемент со вторым,третий с четвертым и т.д. В чём ошибка? #include<stdio.h> #define n 6 int main() { int a; int i,temp; for(i = 0; i <n; i++) scanf("%i", &a); for (i=0;i<n/2;i++)
C++ Получить 10 наиболее часто встречающихся слов из файла Дан символьный файл f, содержащий произвольный текст длиной более 50 слов. Слова в тексте разделены пробелами и знаками препинания. Получить 10 наиболее часто встречающихся слов. http://www.cyberforum.ru/cpp-beginners/thread800551.html
Подпрограмма (функция) C++
Здравствуйте,подскажите в чем проблема понять не могу,прога с виду примитивная и простая ,но значения не верные выдает. Задание звучит так: Даны по 3 стороны для трех треугольников. Найти медианы всех сторон. Высчитываются по формуле (sqrt(2*x^2+2*y^2-z^2))/2, где x y z стороны. #include <iostream> #include <cmath> using namespace std; float function(int x,int y,int z) {return...
C++ Деление на натуральное число
Доброго времени суток! У меня, наверное, глупая проблема, но все таки хочется разобраться. Вот программа, где мне нужно найти число, взаимно обратное N. Но после компиляции С всегда равно 0, кроме того случая, когда N=1. когда вместо '/' ставлю '+' или '-' все работает.Подскажите пожалуйста в чем дело. Пишу на Bloodshed Dev-C++ 4.9.9.2 #include <iostream> using namespace std; int main() { ...
C++ Вычисление одного из углов треугольника, когда заданы значения двух других углов http://www.cyberforum.ru/cpp-beginners/thread800534.html
Написать программу вычисления одного из углов треугольника, когда заданы значения двух других углов. Рекомендуемый вид экрана во время ра-боты. >Введите исходные данные: >Угол А (град) > >Угол В (град) > >Угол С ….. (град)
C++ Файлы. Получить названия, состоящие из двойных слов В текстовом файле хранятся названия городов через запятую. Получить названия, состоящие из двойных слов, например, Нью-Йорк, Новый Орлеан, результат отсортировать в алфавитном порядке. Прошу помочь .... подробнее

Показать сообщение отдельно
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
04.03.2013, 20:03     Деструктор и наследование
UnknownSmith, вы вообще читали о поведении конструктора и деструктора при наследовании?
По вашему, после выполнении вот этой программы, что будет выведено на экран?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
class A
{
   public:
      A()
      {
         std::cout << "Constructor A" << std::endl;
      }
 
      ~A()
      {
         std::cout << "Destructor A" << std::endl;  
      }
};
 
class B: public A
{
   public:
      B()
      {
         std::cout << "Constructor B" << std::endl;
      }
 
      ~B()
      {
         std::cout << "Destructor B" << std::endl;  
      }
};
 
int main(int argc, const char* argv[])
{
   B b;
   return 0;
}
А выведено будет следующее:
Код
Constructor A
Constructor B
Destructor B
Destructor A
Т.е. иными словами, при наследовании сначала выполняется конструктор предка, а затем потомка. Что же касается деструктора, то тут всё наоборот - сначала выполняется деструктор потомка, а затем предка.

Теперь посмотрите на ваши деструкторы. Вы удаляете _chArray два раза. Сначала класс StrLIdf его грохает, а потом и предок StrL пытается удалить уже удалённое.

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