
29.11.2010, 20:29
|
|
блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
|
Я не могу понять, что непонятно автору. Я сам лет пять назад на плюсах писал, потом вообще ничего не писал кроме макросов на ВБА, и сейчас вот ас3 занялся.
Собственно попробую своими словами объяснить:
- есть класс.
- в нем есть функция (функция как мы уже выяснили является объектом)
- все имена классов и функций являются просто ссылками (вот этого я сам долго не мог понять после работы с плюсами), а объекты болтаются где-то в вакууме.
- если функция объявлена в классе, то она принадлежит классу, это просто дочерний элемент класса, какими бы танцами с бубном не пытались ее вызвать.
-- Потому неудивительно что она изменяет переменную принадлежащую своему классу, ведь в теле функции прописано что она изменяет переменную своего класса, а не полученную извне. Если бы функция принимала какие-то значения извне, то может и был бы какой-то эффект иной.
теперь что получается.
мы взяли класс, объявили в нем функцию, создали на эту функцию ссылку. Ну и всё. Эта ссылка позволяет нам вместо class.funk() писать просто funkLink();
Но как бы эту ссылку не использовали - все-равно объект функции является дочерним для своего класса.
Для того чтобы это обойти - нужно оперировать наследованием классов и играться уже со всякими там this.* и super.* - но как-то быстро объяснить особенности не получится, это уже по конкретным примерам лучше.
|