2011-03-06 5 views
16

가능한 중복으로 생성자 호출에 괄호를 사용하지 않으면 :
Do the parentheses after the type name make a difference with new?새 (C++)

그래서 난 내 주에 있었다 :

Class* pC = new Class; 

그것은으로 일하고 있었다

Class* pC = new Class(); 

오늘 나는 괄호를 생략했다는 것을 깨달았습니다. (그래서 나는 가장 귀찮은 구문 분석의 "반대"에 맞았습니다).

내 질문 :이 두 형식이 동일합니까?

+0

두 호출 모두 기본 생성자를 호출합니다. –

답변

40

클래스에 기본 생성자가 정의되어 있으면 둘 다 동일합니다. 해당 생성자를 호출하여 객체가 생성됩니다.

클래스에 암시 적 기본 생성자 만있는 경우에는 차이가 있습니다. 첫 번째는 POD 유형의 멤버를 초기화하지 않습니다. 두 번째 매개 변수는 값을 초기화합니다 (즉 0으로 설정).

+7

+1,이 차이에 대해 몰랐습니다. –

관련 문제