2016-08-03 2 views
2

私は、次のスタンフォード大学教授ニックParlante.TheによってC++エッセンシャル配布資料を読んでいるが、コードの例です:?タイプがAccountあるとき、この関数はゼロを返し、なぜ静的クラス型関数がゼロを返すのはなぜですか?

/* 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); 
} 

私の質問は、それはここで偽意味していますか?

+0

関数 'RandomNum'の実装を表示してください。回答を投稿に編集します。 –

+0

この関数は 'Account'ではなく' Account * 'を返します。 –

+1

@Falmarri私はちょっと初心者なので、恐ろしいコードについてはわかりません。しかし、スタンフォードの教授が虚偽のコードを書くと、初心者として誰が信頼できるのか分かりません。 –

答えて

3

ではなく、Account*を返します。その0はヌルポインタ定数です。

+0

だから、ゼロというだけでヌルポインタを示すことができますか?私はNULLを言う必要はありませんか? –

+1

@Arnob、 'nullptr'を使ってください。 0とNULLは両方とも動作しますが、それらは 'nullptr'が存在するという動機である問題を持っています。 – chris

+0

'nullptr'はC++ 11以降でのみ利用可能です。以前のバージョンでは、代わりに0が使用され、 'NULL'は普通は0のマクロです。例えば' #define NULL 0' –

関連する問題