2011-04-12 43 views
0

我目前正在一些代碼中實現補丁文件,顯然其中一個補丁文件在主類之外的類中使用return 0。我知道返回0會關閉應用程序,如果它在主函數中,但是我不確定它如何在主函數之外的類中運行。基本上,代碼可以在僞代碼中可以總結出這樣的:會在主關閉應用程序之外的類中使用C++返回0?

boost::uint64_t 
namespace::class(etc. etc.) 
{ 

    if (method.isValid) 
    { 
     //do stuff 
    } 
return 0; 
} 

通常當我想在C++返回0,我覺得在這種情況下稱其爲主力,但是退出應用程序的,我不確定這是否會退出應用程序,或者只是該類的功能/它自己的類。有人能解釋一下在這種情況下返回0實際上會做什麼?

感謝, Flyboy

+0

如果你有一個返回值a^2 + b的函數,你會期望這會阻止程序運行嗎? – 2011-04-12 17:17:50

回答

13

號,如果這會發生什麼

想到的就是如此:

int add(int a, int b) { return a + b; } 

// somewhere: 
int zero = add(2, -2); // would this exit the program? 

這並不是說是從main返回重要零,這是return。您可以返回main中的任何值,這樣做會導致程序退出(所有全局變量清理完畢,流關閉,其他清理任務完成)。

+0

謝謝,這使事情變得更加清晰。迴歸而不是主要導致退出的價值也是很好的知識,我不知道這只是回報,但我認爲這是整個回報0;導致它。 – th3flyboy 2011-04-12 17:32:42

3

不,從函數返回0(或其他任何東西)將不會退出應用程序。從主返回 - 而不管返回的值 - 退出(單線程)應用程序。但其他功能始終如一。

3

return 0僅與當前函數的範圍有關,因此如果它在main之外,它將不會關閉該應用程序。

3

main返回退出應用程序(不考慮數值的返回 - 儘管標準只定義爲0EXIT_SUCCESSEXIT_FAILURE含義)。從其他函數返回只是將指定值(如果有)返回給調用者。控制流程不會因爲返回的值恰好爲零而改變。

相關問題