main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?
조회수 1334회
발생하는 문제 및 실행환경
main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?
main()도 return 타입이 있는걸 봐서는 return을 쓰는게 맞는 것 같은데 몇 몇 코드에서는 exit()을 같이 쓰는걸 봤습니다. 둘 중 어느 걸 쓰는게 맞나요?
1 답변
-
main()
에서return
을 쓸 때는, local object의 소멸자가 호출됩니다.exit()
은 return하지 않기 때문에, local 객체의 소멸자가 호출되지 않습니다. (file같은 몇 몇 특수한 경우나static
object는 소멸합니다)abort()
는 그 어떤 객체도 소멸하지 않습니다(global
/static
까지 포함).1.
return
한 경우#include <iostream> using namespace std; class Foo{ public: int num; Foo(int n) : num(n) { cout << "생성자 호출: " << num << endl; } ~Foo() { cout << "소멸자 호출 : " << num << endl; } }; Foo foo0(0); int main(){ Foo foo1(1); return 0; }
출력 :
생성자 호출: 0 생성자 호출: 1 소멸자 호출 : 1 소멸자 호출 : 0
2.
exit()
한 경우#include <iostream> using namespace std; class Foo{ public: int num; Foo(int n) : num(n) { cout << "생성자 호출: " << num << endl; } ~Foo() { cout << "소멸자 호출 : " << num << endl; } }; Foo foo0(0); int main(){ Foo foo1(1); exit(0); }
출력 :
생성자 호출: 0 생성자 호출: 1 소멸자 호출 : 0
댓글 입력