Re[3]: MS embedded VC 4.0 bug
От: IvanGrozny Германия http://IvanGrozny.de.vu
Дата: 09.05.03 08:20
Оценка:
Здравствуйте, bkat, Вы писали:



B>Так вот, адреса, которые будут показаны в 1-м случае и

B>в двух других случаях, будут разными .


IG>сдесь все нормально:

IG>поинтер на класс перемещается, потому разные адреса.

IG>показывает адрес однои функции, другои... и тд.


B>Что-то не понял... Куда и зачем перемещается поинтер на класс?

B>Можно немного подробней?
в одном случае ты береш адрес, на которыи указывает Handle обекта при вызове функции constructora,
в другом референцию на класс.. а в деструкторе адрес ,указываемыи Handlom перед уничтожением.
B>Кстати, а что ты ожидаешь увидеть, если выполнить?
B>
B>CTestClass originalObj;
B>TestAction(originalObj);
B>


ну, предполагаю, что адреса так же будут разными..

B>В этом случае, кстати, copy constructor и функция TestAction

B>тоже покажут разные адреса.


B>Ну и, наконец, что если CTestClass будет таким:

B>
B>class CTestClass  
B>{
B>  CTestClass *m_this;
B>public:
B>  CTestClass()
B>  {
B>     m_this = this;
B>  }

B>  CTestClass(const CTestClass& other)
B>  {
B>     m_this = this;
B>  }

B>  virtual ~CTestClass()
B>  {
B>    assert(m_this==this);
B>  }

B>};
B>


B>В моем случае мы напоремся на assert в деструкторе.


и сдесь все то же самое.
извини, если что..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.