Кто-нибудь может объяснить: чем статические функции в классах отличаются от обычных?
1. Есть мнение: "Каждый экземпляр класса содержит все элементы этого класса..." С данными все понятно, но функция — тоже элемент, т.е. если у меня 2 экземпляра класса, то должно быть два экземпляра функции

(т.е. один и тот же код в памяти по разным адресам... бред...)
2. Есть другое мнение (нравится больше):
class A{
void Fun(int i);
}
Функция Fun, заменяется компилятором на
void Fun(int i, A* pointer);
И соответственно при вызове передается только указатель на класс....
НО, тогда непонятно чем отличается статическая функция, почему адрес этой функции известен на этапе компиляции и почему именно статическая "одна для всех экземпляров" (ведь и эта функция — одна)???
Спасибо за то, что дочитали до конца, ну а если еще и ответите...