„problem” można rozwiązać dodając sufiksy do nazwy funkcji.
przykład z OpenGL:
void glVertex2i(int x, int y);
void glVertex3f(float x, float y, float z);
void glVertex3d(double x, double y, double z);
void glVertex3iv(const int *v);
Gdzie gl
to przedrostek wszystkich funkcji z biblioteki, Vertex
to właściwa nazwa funkcji, a potem idą sufiksy: 2i
oznacza „dwa inty”, 3f
„trzy floaty” i tak dalej. Dzięki temu funkcje mają różne nazwy, ale po zapamiętaniu prostego schematu łatwo odgadnąć nazwę potrzebnej funkcji tak „przeciążonej”.
Kompilator C++ robi za nas to samo automatycznie, zmieniając twoje double oblicz
na jakieś double __AK47_mUmBo_JuMbO_oblicz_123
. Dzięki temu na poziomie binarnym funkcje przeciążone mają różne nazwy, nawet jeśli w kodzie źródłowym mają takie same.