2013-03-17 4 views
6

다음 두 두 초기화 간의 차이점은 무엇입니까? 두 번째 경우에 물체가 보장하면서 오브젝트가 초기화되지 않은 남아있는 제 경우괄호 사용 여부에 관계없이 C++ 클래스 초기화

class Pod { 
public: 
    int a, b; 
}; 

Pod *p1 = new Pod; 
Pod *p2 = new Pod(); 
+0

JamesMcLaughlin이 말했듯이 차이는 없으며, POD에만 국한되지 않습니다. – MFH

+0

@ DavidRodríguez-dribeas 어떻게 그렇게됩니까? –

+0

@JamesMcLaughlin : 표준 8.5 절을 읽으십시오. :) –

답변

8

값으로 초기화가 0으로 초기화 수단 유형이 경우 POD이다

+1

참조 차이점은 기본적으로'int'의 경우에는 존재하지 않습니다. 첫 번째 경우 멤버는 초기화되지 않고 초기화됩니다. –

+0

@JerryCoffin : 그래, 나는 그 부분이 POD라는 사실에도 기인한다. * default-initialization *은 객체가 초기화되지 않았 음을 의미한다 * –

+1

@ DavidRodríguez-dribeas : ... 그러나 C++ 11에서는 POD 유형 (IIRC, 모든 복사 가능 유형 중 다소 넓은 범주에 적용해야 함)에만 국한되지 않습니다. –

관련 문제