2012-02-15 28 views
0

我有一個函數用C++編寫:新到C++,簽名定義

foo (IN bool someMode = false) 

這是什麼意思? 將someMode始終初始化爲false?即使foo被稱爲真?

回答

3

這意味着即使foo有一個參數,你可以調用這個函數不傳遞任何參數爲:

foo(); //ok 

如果這樣調用,然後someMode值將是false,因爲這是它的默認的值是。 someMode = false在函數簽名的意思是,如果沒有參數傳遞,那麼someMode將是false。在編程中,這樣的參數被稱爲默認參數,並且在這種情況下false被稱爲默認值參數的值。

但是,如果你願意,你可以傳遞參數:

foo(false); //ok 
foo(true); //ok 
+1

真棒! thakns很多爲您的幫助! – adisar86 2012-02-15 02:03:32

0

其默認的參數,可以讓你忽略它,基本上,如果你撥打:

foo(); 

然後someMode仍然會存在並被設置爲假,但如果您致電

foo(true); 

那麼someMode將爲true。

+0

再次感謝您的快速回復! – adisar86 2012-02-15 02:04:31

0

通常IN是不做任何事的宏,只是讓你知道參數是函數的輸入,所以你真正擁有的是foo(bool someMode=false)。你留下的是一個默認參數。這意味着你可以調用這樣的代碼:

foo(true); // Here someMode=true 
foo(false); // Here someMode=false 

或類似這樣的

foo(); // Here someMode=false 
+0

謝謝Michael!欣賞快速反應! – adisar86 2012-02-15 02:04:10