2012-01-12 4 views
2
없이

가능한 중복 :
different types of initialization in C++C++ 괄호

어떤 차이가

Foo afoo; 

같은 기본 생성자를 호출 사이에 전혀 있는가 vs

Foo afoo(); 
+6

예, # 2이 (가) 함수를 선언하고 있습니다. –

+1

예, 첫 번째 유형은 'Foo'유형의 객체를 구성하고 두 번째 유형은 생성하지 않습니다. –

답변

2

예 : 첫 번째는 변수 정의이고 두 번째는 함수 선언입니다. 이제이 두 표현의 차이의 더 흥미로운 질문을 논의 할 수 있습니다 :

new Foo() 
new Foo 

을 차이가 Foo 및 회원의 종류에가 달려 있는지 여부! Foo 명시 적 기본 생성자가있는 경우에는 기본 생성자가없는 경우

  • 이 두
  • 동일, 잠재적으로 차이가 있습니다! 집계 또는 기본 제공 유형의 멤버가있는 경우 첫 번째 표현에서는 초기화되지만 두 번째 표현에서는 초기화되지 않습니다. 기본 구성을 갖는 모든 멤버가 기본 생성됩니다.

이는 클래스 구성원에게도 적용됩니다. 변수의 당신이 인수를 복용 명시 적으로 생성자가 없거나 모르는 경우 개체가 당신이

Foo aFoo = Foo(); 

를 사용할 필요가 초기화되어 있는지 확인하기 위해 즉, 괄호를 사용하여 양식을 사용할 수 없습니다 (예를 들어 템플릿 코드에서) .

+0

고장에 감사 드리며 반복해서 죄송합니다. '? – pyInTheSky