2011-11-22 2 views
4

0\false\nullptr0\false\nullptr으로 강제로 포드 유형을 초기화하는 방법은 있습니까? Visual C++ 릴리스 모드? 코드를 변경하지 않고 Visual C++에서 POD 유형의 값 초기화를 강제하는 방법은 무엇입니까?

그냥 나는 우리의 시스템이 결정되고 싶어하기 때문에 나는이 원하는 0\false\nullptr.

으로 초기화 포드 유형과 컴파일, 내 코드를 변경하지 않으 더 구체적으로.

+0

C++ 컴파일러에는 여러 단계가 있음을 이해해야합니다. 함수 내부의 'int i'문은 코드 생성 단계에도 도달하지 않습니다. 컴파일러에서이 기능을 구현해야하는 경우 즉시 코드를 다시 작성해야합니다. 최악의 경우는 아마도 new int [expr] 표현식이고, 생성자는 좋은 초이다. – MSalters

답변

5

예, 값 초기화가 수행합니다.

struct pod { 
    int a, b; 
    char c; 
    double d; 
}; 

pod myPod = pod(); // Value-initialized, all members are 0. 

C++ 11에서는 클래스 정의에 기본값을 할당 할 수도 있지만 Visual Studio에서는 아직이를 지원하지 않습니다.

struct pod { 
    int a = 0, b = 0; 
    char c = 0; 
    double d = 0.0; 
}; 

pod myPod; // All members would be initialized to 0. 
+0

문제는 코드베이스가 커서 코드를 다시 작성하지 않아도된다는 것입니다. –

+4

@ViktorSehr : 코드를 변경하지 않고 코드가 현재와 다른 방식으로 작동하도록 하시겠습니까? – ereOn

+1

당신이 할 수있는 최선의 방법은 동적으로 할당 된 모든 메모리를 zero-initialize하기 위해'operator new'를 오버로드하는 것입니다,하지만 스택에 할당 된 POD는 아마 쓸모가 없습니다. –