3월, 2023의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[C++] 스터디 CPPALOM 14주차: Effective C++ Item 26~35

파워 포인트 파일(.pptx)을 Markdown으로 변환하여 업로드하였음) # <br>CPPALOM # <br>14주차 – Effective C++ item 26~35 한수빈 # <br>항목26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 * 변수는 사용되기 직전에 정의되어야 한다. * 예외 등으로 인해 해당 변수가 사용되지 않음에도 소멸자 등이 호출되는 비용이 발생되기 때문이다! * 루프에서 변수를 다루는 방법 * 루프 바깥쪽에 정의하기: 생성자 1번 + 소멸자 1번 + 대입 n번 * 루프 안쪽에 정의하기: 생성자 n번 + 소멸자 n번 ```C++ Widget w; for (int i = 0; i < n; ++i) { w = i; ... } ``` ```C++ for (int i = 0; i < n; ++i) { Widget w(i); } ``` # <br>항목27: 캐스팅은 절약, 또 절약! 잊지 말자 * 구형 스타일의 캐스트를 사용하지 말자! * dynamic_cast는 성능 저하가 있으므로, 이를 최소화하자! * 최악: 폭포식 dynamic_cast * 수빈의 첨언: * 상속 구조에서 특정한 타입인지를 반드시 알아야되는 구조라면, 리스코프 치환 원칙(LSP) 위배일 가능성이 높다. dynamic_cast는 필요한 경우가 있지만 이에 주의하자! ```C++ for(auto iter = winPtrs.begin(); iter != winPtrs.end(); ++iter) { if(SpecialWindow1 *psw1 = dynamic_cast<SpecialWindow*>(iter->get())) {...} else if (SpecialWindow2 *psw2 = dynamic_cast<SpecialWindow2*>(iter->get()))

[C++] 스터디 CPPALOM 13주차: Effective C++ Chap 3~4

파워 포인트 파일(.pptx)을 Markdown으로 변환하여 업로드하였음) # <br>CPPALOM # <br>13주차 – Effective C++ Chap 3~4 한수빈 # <br>항목13: 자원 관리에는 객체가 그만! * 동적 할당된 객체를 프로그래머가 직접 소멸시키는 것은 위험하다. * RAII: Resource Acquisition Is Initialization. * 힙에 무언가를 할당해야 할 때에는, 자원 관리 객체가 소유하게 한다. * 첫째, 자원을 획득한 후에 자원 관리 객체에게 넘긴다. * 둘째, 자원 관리 객체는 자신의 소멸자를 사용해서 자원이 확실히 해제되도록 한다. * 즉 자원 관리 객체는 스택에 선언되며, 스택에 선언된 자원 관리 객체는 자신이 소멸할 때 자동으로 자신이 갖고 있는 힙 자원들을 소멸시키게 된다. * unique_ptr * shared_ptr ![](img\week13_subin0.png) ![](img\week13_subin1.png) # <br>항목14: 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자 * RAII 방식의 객체를 복사는 어떻게 정의되어야 하는가? * 가령, vector 객체를 복사한다. * 복사를 금지한다. * Uncopyable. * 복사 생성자를 삭제한다. * 관리하고 있는 자원에 대해 참조 카운팅을 수행한다. * shared_ptr * 카운트가 0이 되면 소멸시킨다. * 관리하고 있는 자원을 진짜로 복사한다. * deep copy * 관리하고 있는 자원의 소유권을 옮긴다. * unique_ptr * 단 하나의 객체만 해당 자원을 관리하도록 한다. # <br>항목15: 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자 * 자원 관리 클래스는 자원을 감싸고 있는 객체이다. * 많은 API들은 자원 관리 객체가 아닌 자원 그 자체에 관심이 있다. * 가령,