Что из себя представляет Self 2Delphi , Компоненты и Классы , Процедуры и ФункцииЧто из себя представляет Self 2
Автор: Fantasist Чтобы понять, что такое self надо понять что такое метод класса. Метод класса - это просто функция(процедура) который имеет дополнительный неявный параметр - указатель на экземпляр класса. То есть: TMy = class x: integer; procedure Proc(val: integer); end; procedure TMy.Proc(val: integer); begin x := val; end; После компиляции это будет практически то же самое, что: procedure Proc(self: TMy; val: integer); begin self.x := val; end; То есть на самом деле в методе Proc обращаясь к x мы на самом деле обращаемся к self.x, просто переменная self опускается. В скомпилированном коде нет такого понятия как классы - есть только код и память. Все методы классов превращаются в обыкновенные функции, в которым качестве первого параметра передается указатель на область памяти где лежит созданный пользователем экземпляр класса, который они и используют для чтения или записи(а так же для вызова) того, что мы называем членами класса. var m1, m2: TMy; begin ... m1.Proc(4); // Proc(m1,4) m2.Proc(4); // Proc(m2,4) end; В статье "Что из себя представляет Self 2" автор Fantasist объясняет, что метод класса - это функция с неявным параметром указателем на экземпляр класса, который в скомпилированном коде преобразуется в обычную функцию с указателем на область памяти. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Процедуры и Функции ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |