Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 20:47   #1
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию Деструктор отменяет изменения

Вопрос такой, имеется 2 класса:
Код:
class zveno

{

public:

	zveno();

	virtual ~zveno();

	Tpoint point;

	int fill(Tpoint point,int color);

};




zveno::zveno(){};

zveno::~zveno(){};




class head : public zveno

{

 public:

	 head();

	 virtual ~head();

	 int eat(char food[]);

	 int draw(head h, zveno z[], int count, int course);

};



head::head(){};

head::~head(){};
И функция draw()

Код:
int head::draw(head h, zveno z[],

	       int count, int course)

	     {

	      int boolx,booly;

	      switch (course)

		{

		 case 72:{ //vverx

			  h.point.y--;

			 } break;


		 }

	     }
в фунцкии h.draw(h,z,3,72); нужное значеение меняется, но после этого вызываются деструкторы и возвращают его в прежнее значение...Почему?
[MI_nor] вне форума Ответить с цитированием
Старый 08.11.2009, 21:25   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от [MI_nor] Посмотреть сообщение
в фунцкии h.draw(h,z,3,72); нужное значеение меняется, но после этого вызываются деструкторы
Деструкторы чего?
Цитата:
Сообщение от [MI_nor] Посмотреть сообщение
и возвращают его в прежнее значение...Почему?
Кого его?
Если первый параметр передавать по ссылке, то проблема исчезнет?
Код:
int draw(head &h, zveno z[], int count, int course);
pu4koff вне форума Ответить с цитированием
Старый 08.11.2009, 21:31   #3
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию

сначала деструктор ~head() потом ~zveno(). параметр h.point.y
З.Ы проблема исчезает...
[MI_nor] вне форума Ответить с цитированием
Старый 08.11.2009, 21:40   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Перечитайте главу про передачу параметров по значению, ссылке/ указателю. Если переходите с делфей на плюсы, то обращаю внимание, что тут и объекты классов и стандартные типы равны, в отличии от потомка паскаля, где объекты всегда передаются по ссылке.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Конструктор и Деструктор помогите Maxim_Burea Помощь студентам 15 19.09.2009 19:45
С++ (конструктор, деструктор) Kventin Помощь студентам 4 31.03.2009 18:11
Нужно написать деструктор s-t-r-i-k-e-r Помощь студентам 2 03.06.2008 23:58
Изменения в настройках Иллидан Общие вопросы Delphi 3 19.01.2008 23:50