Страница 1 из 1
this указатель в конструкторе
Добавлено: Чт окт 02, 2003 3:29 pm
Veselchak U
Вопрос знатокам C++:
Могу ли я использовать указатель this в конструкторе етого-же обьекта?
К примеру, если есть класс Fоо:
Я могу гарантировать, что указатель this не будет использоватьса до тех пор пока конструктор не завершит своу работу. Будем говорить, что Bar просто запоминает значение this.
Спасибо!
Добавлено: Чт окт 02, 2003 3:37 pm
Hamster
Можете. Можете даже cast'овать this к типу родительского класса и начать вызывать его методы.
Добавлено: Чт окт 02, 2003 4:10 pm
Veselchak U
Еше раз спасибо!

Добавлено: Чт окт 02, 2003 4:25 pm
DenisM
Hamster писал(а):Можете. Можете даже cast'овать this к типу родительского класса и начать вызывать его методы.
Только невиртуальные

Добавлено: Пт окт 03, 2003 2:22 am
Vlad G
DenisM писал(а):Hamster писал(а):Можете. Можете даже cast'овать this к типу родительского класса и начать вызывать его методы.
Только невиртуальные

виртуальные в конструкторе не работают

Добавлено: Пт окт 03, 2003 2:56 am
DenisM
Vlad G писал(а):DenisM писал(а):Hamster писал(а):Можете. Можете даже cast'овать this к типу родительского класса и начать вызывать его методы.
Только невиртуальные

виртуальные в конструкторе не работают

Я бы сказал, что работают, но неправильно, если из конструктора ( или деструктора ) вызывается виртуальный метод, перегруженный в порожденном классе. Пока не закончен вызов конструктора, vtbl указывает на таблицу виртуальных функций этого класса, а не порожденного. Поэтому вместо перегруженного метода в порожденном классе вызовется соответствующий метод из этого ( ну или базового, если в этом метод не перегружен )
Да, кстати, в VC выдается warning при использовании this в constractor'е, именно для того, чтобы не забыть про эту особенность