2016-08-03 18 views
2

ich C++ Wesentliche Handout von Stanford-Professor Nick Parlante.The liest folgenden ist ein Codebeispiel:Warum gibt die statische Klassentypfunktion null zurück?

/* If C++ kept class name information around at run-time, 
    this would be easier. */ 
    static Account *RandomAccount(void) { 
    switch (RandomNum(3)) { 
    case 0: return(new Gambler); break; 
    case 1: return(new NickleNDime); break; 
    case 2: return(new MonthlyFee); break; 
    } 
    return(0); 
    } 

static int RandomNum(int num) { 
return(rand() % num); 
} 

Meine Frage ist, warum diese Funktion Null zurückgibt, wenn der Typ Account ist Heißt es hier falsch?

+0

Bitte die Implementierung der Funktion 'RandomNum' anzeigen. Bearbeiten Sie Ihren Beitrag mit der Antwort. –

+0

Die Funktion gibt 'Account *', nicht 'Account' zurück. –

+1

@Falmarri Ich habe keine Ahnung von schrecklichen Code, da ich nur ein Anfänger bin. Aber wenn Stanford Professor Mist-Code schreibt, dann weiß ich nicht, wem ich sonst als Anfänger hehehe. –

Antwort

3

Die Funktion gibt Account*, nicht Account zurück. Diese 0 ist eine Nullzeigerkonstante.

+0

Also nur Null sagen, ich kann Nullzeiger bezeichnen? Ich muss nicht NULL sagen? –

+1

@Arnob, Bitte verwenden Sie 'nullptr'. Während 0 und 'NULL' funktionieren, haben sie Probleme, die Motivation für das Vorhandensein von' nullptr' sind. – chris

+0

'nullptr' ist nur in C++ 11 und höher verfügbar. In früheren Versionen wird stattdessen 0 verwendet, und 'NULL' ist normalerweise nur ein Makro für 0, zB' #define NULL 0' –

Verwandte Themen