С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Levenyatko
2 / 2 / 0
Регистрация: 05.07.2012
Сообщений: 99
#1

не работает деструктор - C++

19.09.2012, 16:56. Просмотров 450. Ответов 2
Метки нет (Все метки)

это моя первая программа..я еще не особо разобралась..обьясните почему не работает деструктор и как исправить ошибки

Код
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

class Country // класс страна
{
private:
	char *name; // название
	int nasel; // население
	float plosh; // площадь
	
public:
	Country(); // конструктор без параметров(по умолчанию)
	Country(char *name, int nasel, float plosh); // конструктор с параметрами
    Country(Country &temp); // контструктор копии
  
   ~Country(); // деструктор

    void Print(); // вывод на экран информации
};

void Country::Print()
{
	printf("Nazvanije: %s\n",name);
	printf("Naselenije: %d\n", nasel);
	printf("Ploshad: %.2f\n", plosh);
    	
	printf("\n");
}
Country::~Country()
{
	printf("Destructor used\n");
	if(name != NULL)
		delete []name;
}

Country::Country(Country &temp)
{
	printf("Copy constructor used\n");

	strcpy(name,temp.name);
	nasel = temp.nasel;
	plosh = temp.plosh;
}

Country::Country()
{
	printf("Constructor without params used\n");

	name = NULL;	
	nasel = 0;
	plosh = 0;
}

Country::Country(char *name, int nasel, float plosh)
{
	printf("Constructor with params used\n");
	
	this->name = new char[256];
	strcpy(this->name,name);

    this->nasel=nasel;
	this->plosh=plosh;
}

int main()
{
	char *name = new char[256];
	strcpy(name,"Country");

	Country A; // создание объекта с конструктором по умолчанию
	A.Print();
	
	Country B(name,2000,1230); // создание объекта с помощью конструктора с параметрами
	B.Print(); // вывод на экран
	
	Country C(B); // создание объекта с помощью конструктора копии
	C.Print(); // вывод на экран
	
	
	getch();
	return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2012, 16:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не работает деструктор (C++):

Не работает деструктор - C++
Выписал пример из самоучителя, но выяснилось что не работает деструктор. В чем проблема? #include &lt;iostream&gt; using namespace std; ...

Не работает деструктор - C++
Прошу помощи.Делаю лабораторную. Написал программу для подсчета суммы элементов в тех строках динамического массива, которые содержат хотя...

Не работает деструктор C++ - C++
Работаю в среде DEVc++ #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class Employee { ...

Не работает деструктор - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using std::cout; #pragma hdrstop #pragma argsused class vect { public: vect(int...

Почему не работает деструктор? - C++
Собственно говоря, почему? #include &lt;iostream&gt; using namespace std; class Osoba{ public : char* imie; int wiek; ...

Как работает деструктор? - C++
1.Деструктор вызывается когда объект удаляется? ИЛИ 2. Сам деструктор удаляет объект? P.s. Надеюсь понятно))

2
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.09.2012, 17:22 #2
Кто сказал что не работает, - просто вы это не ведите, - заключите свой код в скобки и посмотрите:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    {
        char *name = new char[256];
    strcpy(name,"Country");
 
    Country A; // создание объекта с конструктором по умолчанию
    A.Print();
 
    Country B(name,2000,1230); // создание объекта с помощью конструктора с параметрами
    B.Print(); // вывод на экран
 
    Country C(B); // создание объекта с помощью конструктора копии
    C.Print(); // вывод на экран
    }
    system("pause");
    return 0;
}
+ ошибка в конструкторе копирования - память выделять надо:
C++
1
2
3
4
5
6
7
8
9
Country::Country(Country &temp)
{
    printf("Copy constructor used\n");
 
    name = new char[strlen(temp.name) + 1];
    strcpy(name,temp.name);
    nasel = temp.nasel;
    plosh = temp.plosh;
}
1
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.09.2012, 17:24 #3
ну да. тут было то же самое, что и в посте выше.
что-то я не непонял, как проставляют таги "не по теме"?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 17:24
Привет! Вот еще темы с ответами:

Не работает деструктор и операторы - C++
Задача, на создание класса «вектор в n-мерном пространстве». Я первоначально сделал эту задачу с статическим выделением памяти, но сказали,...

Почему не работает деструктор? - C++
Подскажите пожалуйста, почему у меня не работает деструктор? #include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; ...

Почему деструктор не работает? - C++
Вроде написал все правильно, а почему то деструктор не работает, данные HI не выводит, почему ? #include &lt;iostream&gt; using namespace...

почему деструктор работает вначале? - C++
#pragma once class Student { private: char* name; int course; public: Student(void); ~Student(void); ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.