Domyślne wartości parametrów nie są możliwe w przypadku złożonych wartości referencyjnych. Pierwszy działa, ponieważ parametry są prymitywami
, które są przechowywane na stosie i są kopiowane przez wartość
. Tablice są złożonymi wartościami referencyjnymi, więc muszą być najpierw przydzielone, zanim pojawią się jako parametry.
Edit:
komentarz @Henk Holterman jest dobrze zrobione. Nie mam bezpośredniej wiedzy na temat tego, czy stos lub sterty wchodzą w grę, więc ta informacja jest błędna lub wprowadzająca w błąd. Podstawowe kryteria, o których mi wiadomo, to to, że można użyć tylko primitives types. Od this document,
Domyślna wartość musi być jednym z następujących rodzajów wyrażeń:
stałym wyrażeniem;
wyrażenie nowej formy ValType(), gdzie ValType jest wartością typu , taką jak wyliczenie lub struct;
wyrażenie domyślne (ValType), gdzie ValType jest wartością typu .
z „prymitywów” link Powyższa lista została zmodyfikowana na 2010 nazywać typy „wbudowane”. Może to być found here.
ciągi są również odwołać typów i mogą być używane jako domyślne dobrze. A stos naprawdę nie odgrywa tutaj żadnej roli. –
@HenkHolterman: Uczciwa. To było uzupełnieniem rozmowy, którą miałem z kimś i nie mogłem znaleźć niczego, co by ją poparło (plus to, co mówisz brzmi rozsądnie). Uderzyłem go i podałem odnośniki do obsługi mojego oświadczenia, że parametry muszą być prymitywne (lub jak są teraz nazywane w 2010 r. - typy wbudowane). –