저는 C++에서 생성자가 어떻게 작동하는지 완전히 이해하려고합니다. 특히 생성자의 멤버 초기화 목록생성자가 인수의 멤버 초기화 목록 부분을 무시하고 생성자에 제공 되었습니까?
3 개의 데이터 멤버 bar, baz 및 qux가있는 클래스 Foobar가 있다고 가정 해보십시오. 수행하는 "기본"으로 멤버 초기화 목록 행위,
Foobar(int bar, int baz, int qux)
: bar(bar), baz(baz), qux(qux)
{
// empty constructor body
}
내 질문은 :
는이 같은 내 생성자를 설정? 또는 항상 발생합니까? 예를 들어, 인수를 사용하여 생성자가 호출 된 경우 초기화 목록이 무시됩니까? 달리 지정하지 않는 한, qux 데이터 멤버를 항상 0으로 유지하려고합니다.
: nar(bar), bar(baz), qux(0)
은 아마도 나는 완전히 멤버 초기화 목록의 기능을 오해하고있어 어쩌면 누군가가 나를 직선 설정할 수 있습니다 : 그래서 내가 대신 멤버 초기화 라인을 작성합니다.
당신의 혼동은 생성자의 매개 변수 이름이 멤버 이름과 동일하다는 사실 때문에 발생한다고 생각합니다. 이것이 합법적 인 반면, 매개 변수 앞에 밑줄을 붙이면 다른 이름을 사용하는 것이 좋습니다. –
가능한 복제본 [이 생성자의 이상한 콜론 구성원 구문은 무엇입니까?] (http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor) – Timbo
@BenjaminLindley 왜 모두가 알고있는 언어 규칙에 어리석은 밑줄을 사용합니까? #IdRatherNotUnderscore –