2012-06-03 3 views
2

생성자가 호출 될 때?

class X { 
    int i; 
public: 
    X(int y): i(y) {} 
}; 

X r(10); 

int main() { 
    return 0; 
} 

그래서 우리는 전역 객체의 연구를 ++ 우리는 C에서 클래스가 있다고 가정. 내 질문은 전역 또는 정적 개체에 대한 생성자가 컴파일 타임에 또는 런타임에 호출되었을 때입니까? 프로그램 실행은 main 함수에서 시작하기 때문에. 그리고 나서 모든 전역 개체를 초기화해야합니다.

+1

생성자와 메인에 중단 점을 넣고 찾아냅니다. – IronMensan

답변

5

물론 컴파일 할 때 아닙니다. 실행시에 main이 들어가기 전에 호출됩니다. 모든 전역 변수와 통계 (메소드 범위 통계 제외)가 초기화됩니다.

+0

하지만 실행은 main()에서 시작되므로 어떻게 main에 들어가기 전에 초기화 될 수 있습니까? – Luv

+2

@Luv 아니, 그렇지 않아. 'main'은 진입 점이며 런타임에 호출됩니다. 그러나 이것이 제일 먼저 부르는 것은 아닙니다. –

관련 문제