1. 程式人生 > >C++ main函式裡的exit與return的區別

C++ main函式裡的exit與return的區別

1 #include <iostream> 2 usingnamespace std; 3 class Temp 4 { 5 public: 6 Temp(){cout<<"Constructor!"<<endl;} 7 ~Temp(){cout<<"Destructor!"<<endl;} 8 }; 9 int main() 10 { 11 Temp t; 12 exit(0) ; 13 }

 輸出:

Constructor!

1 #include <iostream>2 using

namespace std;
3 class Temp
4 {
5 public:
6     Temp(){cout<<"Constructor!"<<endl;}
7 ~Temp(){cout<<"Destructor!"<<endl;}
8 };
9 int main()
10 {  
11     Temp t;
12 return0;
13 }

 輸出:Constructor! Destructor!return會自動呼叫物件的解構函式, 而exit不會!!!exit把控制權交給系統,而return將控制權交給呼叫函式。為什麼用return 0 的時候物件能自動呼叫解構函式,完全是編譯器乾的。
在c main函式中exit和return是相同的;而在c++中,編譯器會將類解構函式的彙編程式碼插入到return前面,但對exit不作任何變動。C++ 中要儘量避免使用exit。