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

Деструктор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить матрицу заданного вида http://www.cyberforum.ru/cpp-beginners/thread258861.html
Построить матрицу вида порядка n C++
C++ Определить сумму элементов главной диагонали матрицы, которые заканчиваются на цифру 7 В квадратном массиве записаны целые числа. Определить сумму элементов главной диагонали, которые заканчиваются на цифру 7. C++ http://www.cyberforum.ru/cpp-beginners/thread258860.html
C++ Не компилируются проекты
В студии писались проекты, они сохранены. переустановлена система, но студия упорно отказывается компилить прошлые программы. Мне, в принципе, надо только код посмотреть (а то уже не помню, как писала кое-что). Причем все коды win32 просматриваю без проблем в блокноте, а вот с clr проблема. Что делать?
Командная строка в С++ C++
В командной строке задается признак фигуры, объем которой необходимо вычислить: s – шар (аргумент – радиус); k – куб (аргумент – сторона); p – параллелепипед (аргументы – стороны a, b и c) c – цилиндр (аргументы – радиус основания и высота). Вычислить объем соответствующей фигуры. Обращение к функциям реализуется через указатель. Я не сильно еще понимаю, как написать программу с...
C++ Дана матрица размера 5 x 10. Удалить первый (последний, все) столбцы, содержащие только положительные элементы. http://www.cyberforum.ru/cpp-beginners/thread258844.html
Помогите решить зачачку в с++: Дана матрица размера 5 x 10. Удалить первый (последний, все) столбцы, содержащие только положительные элементы.
C++ Cортировка списка двумя алгоритмами Люди добрые, помогите, пожалуйста, с задачкой... Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - сортировка списка двумя алгоритмами (Минимаксным и Шелла). Сначала в программе должен вводиться размер списка (целое число), а сам список создается в виде динамического массива структур (использовать функции malloc, calloc, free). Ввод одной... подробнее

Показать сообщение отдельно
LAans
1 / 1 / 0
Регистрация: 29.04.2010
Сообщений: 46

Деструктор - C++

17.03.2011, 01:06. Просмотров 965. Ответов 1
Метки (Все метки)

здравствуйте. подскажите пожалуйста ... почему деструктор некорректно работает ?
не хочет уничтожает объекты динамического массива ( massivD() )

если с помощью ф-ции сет изменить конструктор с параметрами на Ukraine
то деструктор срабатывает в таком порядке
Belarus
Andorra
Italy
Russia
Russia
Ukraine
Ukraine
Russia


C++
1
2
3
4
5
6
7
8
9
10
11
 
 void COUNTRY::massivD()
 {
  COUNTRY* h;
  h=new COUNTRY [3];
  h[0].Set("Latvia", "Parliamentary Republic", 546546.7);
  h[1].Set("Greece", "Parliamentary Republic", 45355.6);
  h[2].Set("Germany", "Federal Parliamentary Republic", 342443.9);
    for (int i=0;i<3;i++)
     h[i].print();
 }
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
// СOUNTRY1.H
#ifndef __COUNTRY1_H
#define __COUNTRY1_H
 
const int size=50;
 
class COUNTRY
 {
public:
  COUNTRY();
  COUNTRY(char*, char*, double);
  COUNTRY(const COUNTRY&);
  ~COUNTRY();
  char* GetName();
  char* GetForm();
  double GetSq() const;
  void SetName(char*);
  void SetForm(char*);
  void SetSq(double);
  void Set(char*, char*, double);
  void massivD();
  void massivS();
  void print();
private:
  char name[size];
  char form[size];
  double sq;
 };
# endif
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# include <string.h>
# include "country1.h"
 
 COUNTRY::COUNTRY (char*name, char*form, double sq)
 {
  Set(name, form, sq);
 }
 
 COUNTRY::COUNTRY ()
 {
  char name[size]="Russia";
  char form[size]="Federation Republic";
  double sq=788754.47;
  Set(name, form, sq);
 }
 
 COUNTRY::COUNTRY (const COUNTRY&c)
 {
  strcpy(name, c.name);
  strcpy(form, c.form);
  sq=c.sq;
 }
 
 COUNTRY::~COUNTRY ()
 {
    cout <<"Destruktor: " << GetName() << endl;
    delete []name;
 }
 
 void COUNTRY::print()
 {
    cout <<"Nazvanie strani: " << GetName() << endl;
    cout <<"Forma pravleniya: " << GetForm() << endl;
    cout <<"Ploshad: " << GetSq() << endl;
    cout << endl;
 }
 
 void COUNTRY::Set(char*name, char*form, double sq)
 {
  SetName(name);
  SetForm(form);
  SetSq(sq);
 }
 
 void COUNTRY::SetName (char* name) { strcpy(COUNTRY::name, name); }
 void COUNTRY::SetForm (char* form) { strcpy(COUNTRY::form, form); }
 void COUNTRY::SetSq (double sq) { COUNTRY::sq=sq; }
 
 char* COUNTRY::GetName() { return name; }
 char* COUNTRY::GetForm() { return form; }
 double COUNTRY::GetSq() const { return sq; }
 
 void COUNTRY::massivS()
 {
  COUNTRY p[3];
  p[0].Set("Italy", "Monarchy", 144634.4);
  p[1].Set("Andorra", "Monarchy", 345344.4);
  p[2].Set("Belarus", "Presidential Republic", 234246.5);
    for (int i=0; i<3; i++)
        p[i].print();
 }
 
 void COUNTRY::massivD()
 {
  COUNTRY* h;
  h=new COUNTRY [3];
  h[0].Set("Latvia", "Parliamentary Republic", 546546.7);
  h[1].Set("Greece", "Parliamentary Republic", 45355.6);
  h[2].Set("Germany", "Federal Parliamentary Republic", 342443.9);
    for (int i=0;i<3;i++)
     h[i].print();
 }
 
 void main ()
 {
  clrscr();
  COUNTRY a;
    cout << "--Konstryktor s ymalchivaemimy paramentramy--" << endl;
    a.print();
 
    cout << "--Konstryktor s paramentramy--" << endl;
  COUNTRY w("Spain", "Monarchy", 984571.9);
     w.print();
 
  COUNTRY n=w;
  cout << "--Konstryktor kopirovaniya--" << endl;
  n.print();
  char name[size];
  char form[size];
  double sq;
    cout << "Strana? ";
     cin >> name;
    cout << "Forma pravleniya? ";
     cin >> form;
    cout << "Ploshad? ";
     cin >> sq;
    cout << endl;
  w.Set(name, form, sq);
  n=w;
    cout << "--Konstryktor s ymalchivaemimy parametrami--" << endl;
     a.print();
    cout << "--Konstryktor s parametrami--" << endl;
     w.print();
    cout << "--Konstryktor kopirovaniya--" << endl;
     n.print();
     cout << "Najmite ENTER dlya vivoda dinamicheskogo massiva" << endl;
     getch();
     cout << "--Dinamicheskyi massiv--" << endl;
     cout << endl;
     COUNTRY z;
     z.massivD();
     cout << "Najmite ENTER dlya vivoda staticheskogo massiva" << endl;
     cout << endl;
     getch();
     cout << "--Staticheskyi massiv--" << endl;
     COUNTRY y;
     y.massivS();
  getch();
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru