2016-07-29 6 views

답변

2

default constructor이 아닌 경우를 생각해 보면이 컴파일러에서 제공됩니다. 그런 다음 = default을 사용하여 컴파일러에 기본 생성자를 만들도록 지시 할 수 있습니다.

그렇지 않으면 (특별한 기본 생성자가 필요하지 않는 한) 어떠한 방식 으로든 (= default의 유무에 관계없이) 기본 생성자를 지정할 이유가 없습니다.

예에서 "명시적인"= default 생성자가 필요하지 않습니다. 더 많은 스타일의 문제입니다.

+0

감사합니다. 그 시나리오에서 나는 그 혜택을 이해합니다. 하지만 실제로 Foo 구조체를 위에 쌓아 두었다면 ctr을 생략하거나보다 구체적인 것으로 명확하게 간주되어 기본값으로 선언됩니다. – user695652

2

here과 마찬가지로 인수를 사용하여 생성자를 만들면 기본 생성자가 생성되지 않습니다. 이 경우 default 키워드를 사용하면 클래스에 대해 default constructor이 생성됩니다.

그러나 다루는 객체에 기본 생성자가 있어야하는지 매우 신중하게 고려해야합니다. 즉, 다른 객체의 기본 초기화가 올바른 작업 인 경우입니다. POD 회원은 기본적으로 초기화되지 않으며 가비지 데이터가 포함될 수 있습니다 (data member initalisers 제외).

2

이것은 의견을 근거로 한 질문 인 것 같습니다. 그러나 첫 번째 옵션은 가장 보편적으로 사용되는 것으로 보입니다. 두 번째 옵션은 좀 더 장황하고 프로그래머는 기본 작업이 delete이 아니면 않는 한 기본값을 사용하지 않는 경향이 있습니다.

0

명시 적으로 기본값이 아닌 생성자를 제공하면 컴파일러에서 기본값을 제공하지 않습니다. 이 경우 컴파일러에서 강제로 제공하도록 default 키워드를 사용할 수 있습니다.

다른 경우는 기본 생성자에 특정 보호 수준이 있는지 확인하려는 경우입니다. 예를 들어 기본 생성자가 private 또는 protected인지 확인하고자 할 수 있습니다.

관련 문제