Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Что из себя представляет Self 2

Delphi , Компоненты и Классы , Процедуры и Функции

Что из себя представляет Self 2

Автор: Fantasist
WEB-сайт: http://forum.vingrad.ru

Чтобы понять, что такое 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
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-13 07:34:15/0.0059211254119873/0