Re: Статические функции
От: Bell Россия  
Дата: 01.04.03 13:03
Оценка: 12 (1)
Здравствуйте, Ash-2, Вы писали:

A2>Кто-нибудь может объяснить: чем статические функции в классах отличаются от обычных?

A2>1. Есть мнение: "Каждый экземпляр класса содержит все элементы этого класса..." С данными все понятно, но функция — тоже элемент, т.е. если у меня 2 экземпляра класса, то должно быть два экземпляра функции (т.е. один и тот же код в памяти по разным адресам... бред...)

действительно бред.

A2>2. Есть другое мнение (нравится больше):

A2>class A{
A2> void Fun(int i);
A2>}
A2>Функция Fun, заменяется компилятором на
A2>void Fun(int i, A* pointer);
A2>И соответственно при вызове передается только указатель на класс....

на самом деле все нестатические функции-члены имеют неявный первый параметр, имя которому this
A2>НО, тогда непонятно чем отличается статическая функция, почему адрес этой функции известен на этапе компиляции и почему именно статическая "одна для всех экземпляров" (ведь и эта функция — одна)???

потому что это фактически обычная функция, не имеющая скрытых параметров, и просто "спрятанная" в пространстве имен класса.

A2>Спасибо за то, что дочитали до конца, ну а если еще и ответите...
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.