Nie nie ma, poniewaz argumenty domniemane "nie istnieją". Jest to tylko "skrót" na podstawie którego kompilator tłumaczy wywołanie na wywołanie pełnej N-argumentowej funkcji. Żądanie, aby byly one jakoś pamiętane i dostarczane świadczy, że nie rozumiesz czym one są, co potrafią, i/lub jak one działają.
Nie wiem czy wiesz, ale wartości domyślne argumentów nie sa częścia deklaracji/sygnatury funkcji, np. nie wyeksportujesz ich z dll'ki (chyba ze do .hpp wcisniesz, ale:) a i w dodatkumozna sobie je przedefiniowac w dowolnym miejscu:
int funkcja(int a, int b=5, int c=3){return a+b+c;} // <-A
int test1()
{
funkcja(1); // 1,5,3 - deklaracja A
}
int funkcja(int a, int b, int c=3); // <-B
int test2()
{
//funkcja(1); // blad kompilacji: redeklaracja B przeslonila A
funkcja(1, 2); // 1,2,3 - deklaracja B
}
int test3()
{
for(int i=0; i<5; ++i)
if(i==3)
{
int funkcja(int a=1, int b=20, int c=0); // <-C, deklaracje moga przeciez byc lokalne!
funkcja(); // 1,20,0 - z deklaracji C
}
// funkcja(); // blad kompilacji - deklaracja C wyszla poza scope
funkcja(2,4); // 2,4,3 - deklaracja "B"
}
nie gwarantuje, że kod sie skompiluje, pisałem na biegu, ale tego typu konstrukcje sa poprawne. Argumenty domyslne sa chwilowe i ulotne wg. scope'a!
Skad wiec biedny kompilator i biedny wskaznik ma wiedziec, jakie sa te domyslne argumenty? wskaznik ma stala wielkosc, np. 4 bajty, zeby wskaznik pamietal LISTE aktualnych domyslnych argumentow, moglby wazyc na przyklad 200 bajtow bo bylo pol setki parametrow.
Wartosci domyslne na bok, nawet przy argumentach ktore sa WBUDOWANE w język, jak np. wartosc this wszystkich metod, takie "tricki" nie przechodza. Dlatego wlasnie wskaznik na metode to INNY TYP niz wskaznik na funkcje -- zeby w TYPIE/SYGNATURZE byla informacja ze ten-jeszcze-parametr-wiecej proszę..