Udostępnij za pośrednictwem


Wyrażenia argumentu domyślnego

Wyrażenia używane dla argumentów domyślnych są często stałymi wyrażeniami, ale nie jest to wymagane.Wyrażenie mogą łączyć funkcje, które są widoczne w bieżącym zakresie, stałe wyrażenia i zmienne globalne.Wyrażenie nie może zawierać zmiennych lokalnych lub zmiennych, które należą do klasy i nie są statyczne.Ilustruje to poniższy kod:

BOOL CreateVScrollBar( HWND hWnd, short nWidth =
GetSystemMetrics( SM_CXVSCROLL ) );

Poprzedzająca deklaracja określa funkcję, która tworzy pionowy pasek przewijania określonej szerokości.Jeśli żaden argument szerokości nie zostanie podany, zostanie wywołana funkcja GetSystemMetrics z Windows API w celu wyszukania domyślnej szerokości paska przewijania.

Domyślne wyrażenie jest obliczane po wywołaniu funkcji, ale obliczenia kończą się zanim wywołanie funkcji będzie faktycznie miało miejsce.

Ponieważ formalne argumenty funkcji są w zakresie funkcji, a ocena domyślnych argumentów ma miejsce przed wejściem do tego zakresu, argumentów formalnych lub lokalnych zmiennych nie można używać w wyrażeniach argumentów domyślnych.

Należy pamiętać, że każdy argument formalny deklarowany przed wyrażeniem argumentów domyślnych może ukryć nazwę globalną w zakresie funkcji, co może powodować błędy.Poniższy kod jest niedozwolony:

const int Categories = 9;
void EnumCategories( char *Categories[], int n = Categories );

W poprzednim kodzie globalna nazwa Categories jest ukryta w zakresie funkcji, co czyni wyrażenie argumentów domyślnych nieprawidłowym.

Zobacz też

Informacje

Argumenty domyślne