저는 C++을 배우고 있습니다. C++ Primer plus. 그러나 나는 방금 cplusplus 웹 사이트를 체크 아웃하고 파일 핸들링을 약간 건너 뛰었습니다.'대괄호 초기화'. (C++)
나는 자바, PHP, 비주얼 베이직에서 나오는 파일 핸들링의 기초를 거의 알고있다. 그러나 나는 꽤 이상한 선을 가로 질러왔다.
ostream os(&fb);
fb는 filebuf를 나타냅니다. 난 그냥이의 구문을 얻을하지 않습니다,하지만 난 그게 같은 있다는 알아낼 수 :
ostream os = &fb;
하지만 난 정말 변수를 초기화하는이 방법에 대해 읽어 본 적이.
그래서 궁금합니다. 나는 단지 무의미한가하고 전체 유용한 기능을 놓치고 있습니까? 단지 오래된 것을 초기화하는 방법입니까? 뭔가 다른가요?
미리 감사드립니다.
위대한 참조 및 빠른 답변을 주셔서 감사합니다. –
여기에 답변을 제공해야합니다. 다른 사람이이 질문에 답해야 할 필요가있을 때 링크가 작동하지 않을 수 있습니다. 이봐, 담당자를 원한다면 실제 답변을 게시해야합니다. 그것은 일반적으로 예의입니다. – jalf
두번째 링크에서 가볍게 바꾸어 말하면 :'ostream os = &fb;'는 복사 초기화이고'os'는 항상'ostream'의 복사기를 사용하여 초기화됩니다. ("="은 C의 문법 유지이다. operator =는 절대 호출되지 않는다.) 컴파일러는 이런 상황에서 복사 생성을 최적화하는 것이 실제로 가능하다. 최적화를 수행하는 경우에도 복사 제어기에 계속 액세스 할 수 있어야합니다. ** 지침 : ** ostream os (& fb) 형식의 양식을 사용하십시오. 'ostream os = & fb'가 작동 할 때마다 항상 작동하며, 다른 장점 (예 : 여러 매개 변수를 사용할 수 있음)이 있습니다. –