我有一個函數清理()通行證main()中在C++函數
void cleanup() {
// blah
}
int main() {
// many variable initializations
// call cleanup
cleanup(this); // <--- can i do this?
}
能否通過主()成函數清理()? 這 - > something.close() 和 這個 - >東西= NULL
感謝: 並通過做這樣的事情做清理工作。
我有一個函數清理()通行證main()中在C++函數
void cleanup() {
// blah
}
int main() {
// many variable initializations
// call cleanup
cleanup(this); // <--- can i do this?
}
能否通過主()成函數清理()? 這 - > something.close() 和 這個 - >東西= NULL
感謝: 並通過做這樣的事情做清理工作。
重新
」我可以通過
main()
成函數cleanup()
?
不,你不能–在形式上正確的程序–因爲你不能採取main
地址。
而不是命名清理函數,你可以簡單地使用C++析構函數。讓每個對象在它的析構函數中自行清理。這就是所謂的RAII:資源獲取初始化(好吧,這是一個愚蠢的縮寫)。
謝謝你實際上回答這個問題。這只是我想知道是否有可能,並沒有真正出現在谷歌搜索。 – lppier
不,你不能那樣做。 this
指針僅在您未使用的類的範圍內可用。 main
函數也沒有在類中定義。
此外,您不能在C++中傳遞函數,因爲它們不是「一等公民」。你需要使用函數指針來傳遞函數,即使如此,試圖通過main
也沒有意義。當需要回撥時,這通常是有意義的,並且main
當然不適合用於此目的。
我建議您開始使用C++語言的入門教程,如this one。
你應該閱讀「this」的目的,但在此之前你應該瞭解課程。 –
你不需要清理main。一旦超出範圍(程序結束時),任何變量都將返回到堆棧。您通常唯一需要擔心的是動態分配的變量,但在main的情況下,一旦程序結束,所有這些都將返回到操作系統。 –
這看起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - 如果你問一個關於你的問題的問題,你會得到更好的結果想要做的,而不是關於如何去做的想法。 – Hurkyl