2015-10-20 52 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