|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.12.2010, 19:04 | #1 |
Новичок
Джуниор
Регистрация: 23.12.2010
Сообщений: 4
|
проблема с классами
есть такая программа:
Код:
подскажите, что у делаю не так заранее спасибо |
23.12.2010, 19:12 | #2 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
может после выполнения getchar срабатывают деструкторы? поставь точку останова в деструкторе посмори прыгнет ли туда
|
23.12.2010, 19:24 | #3 |
Новичок
Джуниор
Регистрация: 23.12.2010
Сообщений: 4
|
вызывается, но мусором переменные захламляются раньше(((
и никак не могу понять почему( |
23.12.2010, 19:53 | #4 |
Регистрация: 29.11.2010
Сообщений: 7
|
Перегрузка конструкторов не совсем верно организованно
Здесь: Зачем? CNode::CNode(const CNode& _n) : x(_n.x) , y(_n.y) , number(_n.number) , st_sv(_n.st_sv) { } код явно стырили. |
23.12.2010, 20:00 | #5 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
Откомпелил ваш (пост выше говорит что не ваш) код, l на самом деле остается там все значения такие а вот у остальыне классы как раз там вызывается деструктор .. почему хз.. может компилер решил удалить их пораньше потому как дальше по тексту не идет их использования?
ЗЫ: да нет что то тут не то) деструктор вызвался из CBasefelem::CBasefelem .. причем обратите внимание в конструкторе передается параметр по значению а присваивается в мембер по ссылке.. после отработки конструктора переменная из параметров уничтожается(так как в стеке) отсюда видат ьи деструктор Последний раз редактировалось UltimaBeaR; 23.12.2010 в 20:06. |
23.12.2010, 20:10 | #6 |
Новичок
Джуниор
Регистрация: 23.12.2010
Сообщений: 4
|
ммм, код мой, перегрузка конструктора потому, что с указателями работаю.
присваивается по ссылке потому, что присваивается указателю, разве это не верно? |
23.12.2010, 20:13 | #7 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Да. Ты передаешь конструктору CBasefelem параметры по значению. При этом компилятор создает в стеке их копию, и после вызова конструктора эту копию уничтожает. И поля-указатели в классе показывают теперь туда, где ничего уже нет )
|
23.12.2010, 20:18 | #8 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
передавай по ссылке, а в конструкторе выделяй память под экземпляр и копируй туда переданный.. или если хочешь без указателя то поидее в инициализационной части просто передаешь эту же ссылку... это если ты хочешь чтобы была копия внутри.. если просто указатель нужен, то тожесамое все тока без выделения памяти
ЗЫ: если не врубился про стек и удаление.. то запомни вот чего: Код:
Последний раз редактировалось UltimaBeaR; 23.12.2010 в 20:23. |
23.12.2010, 20:42 | #9 |
Новичок
Джуниор
Регистрация: 23.12.2010
Сообщений: 4
|
я про все врубился))
просто я исправил уже спасибо ошибка была в том что надо было так Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с классами | sazonoff.13 | Помощь студентам | 1 | 07.10.2010 10:45 |
C# ошибка с классами | nuevegramodelamor | Помощь студентам | 0 | 04.10.2010 12:45 |
Работа с классами | Superlotles | Общие вопросы C/C++ | 6 | 16.06.2010 17:15 |
проблемма с классами | ciaonataha | Общие вопросы C/C++ | 1 | 24.07.2009 18:04 |
Вопрос с классами. | Вадим Буренков | Общие вопросы Delphi | 11 | 13.07.2009 10:57 |