статическая функция это



Автор (^ ^,) задал вопрос в разделе Другие языки и технологии

Статичная функция внутри класса. какие данные будут доступны всем образцам класса? и получил лучший ответ

Ответ от Ra[гуру]
Полагаю, речь идет о С++?
> если мы создаем статичную ПЕРЕМЕННУЮ внутри класса
то она доступна (едина) всем образцам (протатипам) класса
и изменение в одном обрзаце этой переменной - затронит и все остальные.
Какая-то странная терминология. Обычно говорят "класс", "поля", "данные класса", "методы" или "функции-члены", "экземпляры класса" или просто "объекты класса".
Да, если объявить поле статическим, то оно будет общим для всех экземпляров класса и в памяти будет единственным.
> а что касается статичной функции внутри класса, как такое обявление затронит работу нескольких образцов?
Ну если поведение объектов меняется при изменении статичных полей, то как-то затронет. Из статичного метода нет доступа к полям класса, если они не статичные. Причем статичные метод можно вызвать даже не имея ни одного созданного экземпляра класса:
MyClass::my_static_method();
> переменные (не статичные) внутри статичной функции будут ли едины для всех образцов класса
Нет. С чего бы это вдруг им быть едиными?
ra
Высший разум
(108175)
> Пожалуйста посоветуйте литературу из разряда
> "Каждый программист C++ обязан прочитать от начала до конца"
Начинающим изучать программирование с С++ обычно рекомендую Бьярне Страуструп "Программирование: принципы и практика использования C++", но она действительно для начинающих. Еще у меня есть "Язык программирования С++" того же автора, в него заглядываю, как в справочник или если что-то подзабыл.
Вообще на языке не стоит зацикливаться, а стоит расширять кругозор. Почитать Вирта, Дейктру, Кнута, Седжвика (книги из серии "Фундаментальные алгоритмы на ...", ознакомится с функциональным и декларативным программированием. Полезно иметь представление о паттернах проектирования (Банда четырех, Фаулер). Ознакомится с каким-нибудь динамическим языком (python, ruby, javascript).

Ответ от Like-an-ocean[активный]
Странный вопрос. Вообще такие вещи могут зависеть от языка программирования, но на тех, которые знаю я:
1. Статическая переменная хранится в единственном экземпляре, то есть изменение этой переменной в одном объекте приведет к изменению в другом. (По факту все объекты содержат просто ссылку на одну переменную) .
2. А что будет со статической функцией? Просто ее можно будет использовать не создавая экземпляр класса. например в Java функция main - static.
Ты не сможешь из внешнего объекта обратиться к переменной функции. Как правило переменная объявленная внутри блока кода (в нашем случае функции) уничтожается по выходу из функции.
Статическое поле будет общим для двух экземпляров.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Статичная функция внутри класса. какие данные будут доступны всем образцам класса?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*