最近我有一個非初始化變量很多麻煩。C++:如何確保所有變量都被初始化?
在Java中,變量的默認值是空值,因此一個例外可能是,如果使用非初始化的變量時,被拋出。如果我明白,在C++中,變量是初始化的,並且內存中的任何數據都將被初始化。這意味着程序很可能運行,甚至很難甚至知道它有什麼問題。
乾淨的方式來處理這個問題?是否有一些良好的編程習慣可以降低風險?在我的情況下,變量是在頭文件中聲明的,應該已經在cpp文件中初始化了,這是一個讓錯誤更可能發生的例子。
接受幾個答案後THX
版:
我的道歉,我的問題不夠具體。
我獲得使用標誌的編譯器的答案得到通知未初始化的變量將是有益的。
但也有罕見的套管變量不能在一開始,因爲這取決於你的系統的行爲進行初始化。
在頭文件
double learnedValue;
在CPP文件
/* code that has nothing to do with learnedValue
...
*/
learnedValue = a*b*c; // values of a, b and c computed in the code above
/*code making use of learned value
...
*/
現在所發生的事情是,忘了線 「learnedValue = A * B * C」。
但程序工作不錯,只是與任何初始化learnedValue的價值是什麼在存儲它在聲明的時候。
在Java中,這樣的錯誤是不是一個問題,因爲代碼利用學習值很可能崩潰或拋出一個異常(至少你知道什麼是錯的)。
在C++中,可以明顯地感到高興和永遠不會知道有一個問題都沒有。要麼 ?
養成了在定義時初始化變量的習慣。 – 2013-04-09 06:21:16
在C++中,一個變量被初始化爲你決定用它進行初始化的任何東西。如果你讓他們不確定,你擲骰子,並採取你的機會(即作爲一個評估時,indeterminate =未定義的行爲)。 – WhozCraig 2013-04-09 06:21:17
只需將變量定義爲您想要的任何值即可。例如,如果你聲明瞭一個'int',將它設置爲'0'。 – OGH 2013-04-09 06:21:52