| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > smart pointer-ы |
| Автор: Master01 21.9.2008, 00:06 | ||||||
| всем, привет вот решил заняться smart pointer-ами. Нашёл замечательную книжку (хочется так думать) Джеффа Элджера и углубился в эту увлекательную область написал вот что
и
CInteger - просто некоторый класс. CPInteger - умный указатель для него. в Main пишу следуещее: CPInteger psp; psp->msgbox(); в результате чего на экране появляется соответствующий messadgebox, т.е. всё работает нормально. Далее изменяю CPInteger(см. 11 строку)
т.е. теперь перегруженный оператор -> всегда возвращает NULL, запускаю на выполнение... ВСЁ РАБОТАЕТ!!!!! ради смеха пробовал return reinterpret_cast<CInteger>(87878787) и что вы думаете? во время отладки стрелочка дебаггера благополучно перескакивает на строчку "void __stdcall msgbox() { MessageBox(NULL,"CInteger.msgbox","CInteger.msgbox",MB_OK); }" , в в окошке watches значение указателя this отображается как 53CEC83!!! т.е. там есть объект... я конечно понимаю что это smart поинтеры.. но всё ж Сильно подозреваю компилятор. использую Visual studio 2003, я в принципе на неё только пересел, может что-то не так настроил..... Добавлено через 2 минуты и 54 секунды прошу прощения! - случайно дважды создал тему) |