Цитата(yngwie19 @ 1.9.2008, 21:42) | Всем привет, простите за глупый вопрос. Помогите мне разобраться с указателем this, Во всех книгах написано, что он используется для возврата адреса объекта. Я не очень понимаю зачем это нужно и где это можно использовать. Объясните пожалуйста на примерах. СПАСИБО |
Сначала надо понять, что такое объект. Допустим, у нас есть класс MyClass. Это тип. Когда мы пишем Мы создаем объект obj класса MyClass. Допустим, MyClass имеет метод method(), который изменяет поле var:Код | class MyClass { public: int method() { return ++var; } private: int var; };
MyClass obj;
obj.method(); |
Во-первых, компилятор неявно (т.е. незаметно для программиста) преобразовывает каждый нестатический метод, добавляя первый параметр указатель на MyClass. Во-вторых, любой доступ к переменным класса из методов приводит к виду this->var. Итого, в данном случае получается:Код | int method(MyClass *this) { ++this->var; } |
Итак, что происходит, когда вызывается method()? Компилятор неявно первым параметром передает указатель на obj, в итоге реальный вызов выглядит так:Код | MyClass::method(&obj); |
|