| 
| 
 | Вопрос # 6 123/ вопрос открыт / | 
 |  Здравствуйте! Есть вопрос. Почитал учебники по Дельфи на разных сайтах: статическим называется метод объявленный с ключевым словом class и, в отличие от НЕСТАТИЧЕСКОГО метода, может быть вызван без конструирования объекта вот так:     type TMyClass = class class procedure MyProcedure; end; end; var i : integer; begin TMyClass.MyProcedure; end;Получается, метод вызываемый посредством создания объекта нестатический?! Причем, тут же ниже: "все методы Delphi по умолчанию статические". Как же так? Ведь только что написали, что МЕТОД ЭКЗЕМПЛЯРА НЕстатический! Очень надеюсь на Вашу помощь, заранее спасибо! 
|  |   Вопрос задал: Phantom (статус: Посетитель)Вопрос отправлен: 9 мая 2012, 18:17
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: bugmenot Здравствуйте, Бородеев Илья Вадимович!Это описан классовый метод. Статическими же являются все невиртуальные методы экземпляра. В качестве иллюстрации см. System.TObject.Free:
 
 procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;который вызывает виртуальный деструктор экземпляра. Таким образом:
 var 
  o: TStrings; { например }
begin
  o := nil;
  o.Free;  { метод статический и исключение не выкинет! }
end.Почитайте здесь про типы связывания методов
 http://docwiki.embarcadero.com/RADStudio/en/Methods#Method_Binding
 а ниже есть про классовые методы
 
|  | Ответ отправил: bugmenot (статус: 3-ий класс)Время отправки: 9 мая 2012, 19:10
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо, понял! |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 10 мая 2012, 18:11; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 9 мая 2012, 19:05 [#1]:Всё правильно. Что волнует-то? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 10 мая 2012, 10:54 [#2]:все невиртуальные методы статические? это нечто. а код
 
 var 
  o: TStrings; { например }
begin
  o := nil;
  o.Free;  { метод статический и исключение не выкинет! }
end.это конечно нечто. Да, исключения не будет, но по совсем другой причине.Галочка "подтверждения прочтения" - вселенское зло. |  
|   | bugmenot (статус: 3-ий класс), 10 мая 2012, 18:11 [#3]: Цитата (Вадим К): это конечно нечто Ваша попытка покритиковать мой ответ это нечто
  
 Цитата (Вадим К): исключения не будет, но по совсем другой причине И по какой же, интересно? Учитывая, что Free статический, и логика, приведенная мной успешно выполнится.
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |