Здравствуйте, 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 в деструкторе.
и сдесь все то же самое.
извини, если что..