:C++에서 기본 생성자를 사용하여 변수를 정의하고 선언하려면 어떻게해야합니까? 전역 범위에서 선언과 정의에 대한 이해에서
MyClass instance();//Declares a function that returns a MyClass
MyClass instance;//Declares an instance of MyClass
그것은 변수를 선언하고 전역 범위에서 기본 생성자를 사용하도록 정의 할 수 있습니까? 클래스 대신 구조체를 사용한다면 어떨까요?
편집 :
좋아, MyClass instance;
기본 생성자를 호출한다. 사람이이 this example과 일치하는 방법을 설명 할 수 :
int a; // not default constructed, will have random data
int b = int(); // will be initialised to zero
왜이 동작이'i nt' 작동 (위의 편집 참조)? – Casebash
@Casebash -'int'는 POD 타입이며, 선언 된 방식에 따라 0으로 초기화되거나 초기화되지 않습니다. 'int'를 국지적으로 스택에 선언하고 그것을 명시 적으로 초기화하지 않으면, 여러분이 지시 한대로 임의의 데이터를 갖게됩니다. 자세한 내용은이 답변을 참조하십시오. http : // stackoverflow.3102134 # 3102134 – LeopardSkinPillBoxHat
'MyStruct'가'struct MyStruct {int a;};'로 정의되었다고 가정 해 봅시다. 링크 된 대답은 MyStruct가 로컬 범위에서 선언 된 경우 (myInstance.a가 정의되지 않는다고 말하면) 기본값으로 초기화되지 않았 음을 의미합니다. 구조체의 기본 생성자는 구조체의 각 요소에 대한 기본 생성자를 호출합니다. 맞습니까? – Casebash