생성자를 "명시 적"으로 표시하는 것을 잊는 것은 매우 쉽습니다 : args 추가/제거, 옵션 선택 등. 모든 신뢰할 수있는 방법은 명시 적으로 모든 생성자를 선언 한 다음 implicitness가 디자인에 필요하면이 키워드를 제거하는 것입니다. (단일 인수 생성자 만이 아니라 이것을 허용하는 표준 덕분에). 그러나 이것은보기 흉하게 보일 것입니다.생성자가 기본적으로 명시 적이지 않은 이유는 무엇입니까?
암시 적 생성자는 암시 적 변환 (예 : 잘못된)의 사용을 의도하지 않습니다. here으로. 우연히 발생할 수 있거나 이전 버전과의 호환성을 깨뜨릴 수 있습니다.
이렇게하면 버그가 줄어들면 "명시 적"이 생성자의 기본 특성이 아닌 이유는 무엇입니까?
p.s. 예, Stroustrup의 "The Design and Evolution of C++"를 읽었습니다. "explicit"에 대해 말하면 기억하지 못합니다.
"잊어 버림"이 경험과 함께 없어집니다. –
@ 유전자 : 시야에있는 모든 것을 '명백하게'하고자하는 것처럼. –
@robin 후드 : 링크에 관해서는 내 관점에서 암시 적 변환과 관련된 문제는 아니지만 "함수가 A 객체 만 사용한다는 것을 알지 못하는 바보 프로그래머는 A 객체를 통해 매번 생성 될 것입니다. 고리." 문제가 놀랄만 한 코드 효과라면, 대답은 언어를 어지럽히 기보다는 더 나은 프로그래머가되어야합니다. 물론 세계의 C#/Java/VB 팬들도 서로 다른 의견을 가지고 있습니다. –