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

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

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

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

19.09.2012, 16:56. Просмотров 432. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2012, 16:56     не работает деструктор
Посмотрите здесь:

Не работает деструктор и операторы C++
C++ Почему деструктор работает неправильно?
C++ Не работает деструктор
почему деструктор работает вначале? C++
C++ ООП. Не работает задача (конструктор, деструктор)
Почему деструктор не работает? C++
C++ Не работает деструктор C++
C++ Не работает деструктор
C++ Не работает деструктор
Почему не работает деструктор? C++
Почему не работает деструктор? C++
C++ Как работает деструктор?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1427 / 764 / 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;
}
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.09.2012, 17:24     не работает деструктор #3
ну да. тут было то же самое, что и в посте выше.
что-то я не непонял, как проставляют таги "не по теме"?
Yandex
Объявления
19.09.2012, 17:24     не работает деструктор
Ответ Создать тему
Опции темы

Текущее время: 23:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru