Показать сообщение отдельно
Старый 29.11.2010, 20:29
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 12  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я не могу понять, что непонятно автору. Я сам лет пять назад на плюсах писал, потом вообще ничего не писал кроме макросов на ВБА, и сейчас вот ас3 занялся.

Собственно попробую своими словами объяснить:

- есть класс.
- в нем есть функция (функция как мы уже выяснили является объектом)
- все имена классов и функций являются просто ссылками (вот этого я сам долго не мог понять после работы с плюсами), а объекты болтаются где-то в вакууме.
- если функция объявлена в классе, то она принадлежит классу, это просто дочерний элемент класса, какими бы танцами с бубном не пытались ее вызвать.
-- Потому неудивительно что она изменяет переменную принадлежащую своему классу, ведь в теле функции прописано что она изменяет переменную своего класса, а не полученную извне. Если бы функция принимала какие-то значения извне, то может и был бы какой-то эффект иной.

теперь что получается.
мы взяли класс, объявили в нем функцию, создали на эту функцию ссылку. Ну и всё. Эта ссылка позволяет нам вместо class.funk() писать просто funkLink();
Но как бы эту ссылку не использовали - все-равно объект функции является дочерним для своего класса.

Для того чтобы это обойти - нужно оперировать наследованием классов и играться уже со всякими там this.* и super.* - но как-то быстро объяснить особенности не получится, это уже по конкретным примерам лучше.