main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?


발생하는 문제 및 실행환경

main에서 exit이랑 return중 어느 걸 쓰는게 맞나요?

main()도 return 타입이 있는걸 봐서는 return을 쓰는게 맞는 것 같은데 몇 몇 코드에서는 exit()을 같이 쓰는걸 봤습니다. 둘 중 어느 걸 쓰는게 맞나요?

  • 2016년 02월 23일에 작성됨

조회수 142


1 답변


좋아요
0
싫어요
채택취소하기

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
  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close