2015-10-20 58 views
-4

我有一個函數清理()通行證main()中在C++函數

void cleanup() { 
// blah 
} 

int main() { 
// many variable initializations 
// call cleanup 
cleanup(this); // <--- can i do this? 
} 

能否通過主()成函數清理()? 這 - > something.close() 和 這個 - >東西= NULL

感謝: 並通過做這樣的事情做清理工作。

+1

你應該閱讀「this」的目的,但在此之前你應該瞭解課程。 –

+0

你不需要清理main。一旦超出範圍(程序結束時),任何變量都將返回到堆棧。您通常唯一需要擔心的是動態分配的變量,但在main的情況下,一旦程序結束,所有這些都將返回到操作系統。 –

+1

這看起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - 如果你問一個關於你的問題的問題,你會得到更好的結果想要做的,而不是關於如何去做的想法。 – Hurkyl

回答

1

重新

我可以通過main()成函數cleanup()

不,你不能–在形式上正確的程序–因爲你不能採取main地址。

而不是命名清理函數,你可以簡單地使用C++析構函數。讓每個對象在它的析構函數中自行清理。這就是所謂的RAII資源獲取初始化(好吧,這是一個愚蠢的縮寫)。

+0

謝謝你實際上回答這個問題。這只是我想知道是否有可能,並沒有真正出現在谷歌搜索。 – lppier

1

不,你不能那樣做。 this指針僅在您未使用的類的範圍內可用。 main函數也沒有在類中定義。

此外,您不能在C++中傳遞函數,因爲它們不是「一等公民」。你需要使用函數指針來傳遞函數,即使如此,試圖通過main也沒有意義。當需要回撥時,這通常是有意義的,並且main當然不適合用於此目的。

我建議您開始使用C++語言的入門教程,如this one