분류 전체보기(599)
-
예외를 던지지않는 swap(effective c++ 25)
표준 제공 swap복사만 제대로 지원하는 타입이면 어떤 타입의 객체이든 맞바꾸기 동작을 수행한다. 성능swap의 내부에 객체를 넘기면 얄짤 없이 복사가 세 번이 일어난다. (엄청난 비효율) pimpl기법pointer to implementation이란 뜻으로 객체가 실제 데이터를 모두 가지고 있는 것이 아니라 이를 가리키는 포인터로 설계하는 기법. 비효율적 swap 호출 한번 복사에 복사 생성자와 대입연산자가 여러 번 호출한다. 특히 pImpl 기법이 사용되었다면 극도로 비효율적인 작업이 된다. 특수화 템플릿 swap 클래스의 swap으로 데이터가 가리키는 포인터만 서로 교환한다.Wiget2의 완전 특수화 템플릿을 구성해주어 해당 클래스가 호출 될 때 이 특수화 함수가 호출 되도록 한다. 클래스 템플릿 ..
2015.08.25 -
타입변환이 모든 매개변수에 적용된다면? 그 함수는 비멤버로(effective c++ 24)
예시- 어떤 함수에 들어가는 모든 매개변수(this 포인터가 가리키는 객체도 포함해서)에 대해 타입 변환을 해 줄 필요가 있다면, 그 함수는 비 멤버 함수여야 한다.- 암시적 타입 변환에 대해 매개변수가 적용되려면 매개변수 리스트에 들어있어야 한다는 것.(말이 너무 어렵다!!!!) 해결 보통 프렌드로 비맴버 함수로 구현했었는데. 변환생성자에 explicit를 안쓰면 뭔가 깨림찍..
2015.08.25 -
멤버 함수보단 비멤버 비프렌드 함수를!(effective c++ 23)
클래스에서 여러 함수를 호출해야 할 때, 함수들을 모아서 불러주는 함수를 만들 수 있다. 예시 해당 클래스의 클리어에 관련된 모든 함수를 호출하는 함수를 만들고 싶다. 1안은 멤버 함수로 2안은 비멤버 함수로. 비멤버 함수의 이점캡슐화! 함수가 보이지가 않아요! - 어떤 것을 캡슐화하면, 외부에서 이것을 볼 수 없게 된다. - 그렇게 되면 (변경 자체가 영향을 줄 수 있는 범위가 ‘변경된 것을 볼 수 있는 것들’로 한정되기 때문에) 그것들을 바꿀 때 필요한 유연성이 커진다. - 즉, 이미 있는 코드를 바꾸더라도 제한된 사용자들 밖에 영향을 주지 않는 융통성을 확보할 수 있다. 패키징 유연성 - 해당 클래스의 관련된 기능을 구현하는 데 있어서 패키징 유연성(packaging flexibility)이 높아진..
2015.08.25 -
데이터 멤버는 private(effective c++ 22)
Public이면 왜 안 되는가? WHY?문법적 일관성 – 항목 18 참조데이터 멤버가 public이 아니라면, 외부에서 접근할 수 있는 유일한 수단은 멤버 함수함수를 사용하면 데이터 멤버의 접근성에 대해 정교한 제어를 할 수 있다.캡슐화(encapsulation) 정리 데이터 멤버는 private 멤버로 선언하자. - 문법적으로 일관성 있는 데이터 접근 통로를 제공할 수 있다.- 세밀한 접근 제어도 가능- 클래스의 불변속성을 강화- 내부 구현의 융통성 발휘 protected는 public보다 더 많이 ‘보호’ 받고 있는 것이 절대로 아니다.
2015.08.25 -
적재적소 알맞은 컨테이너(effective STL 01)
종류를 알아보자.Sequence Container : vector, string, deque, listAssociative Container : set, multiset, map, multimap비표준 Sequence : slist(single linked list), rope(대용량 string).비표준 Associative Constainer : hash_set, hash_multiset, hash_map, hash_multimap.String 대신 사용되는 vector : 간혹 이렇게 쓰면 괜찮을 때가 있다.표준 연관 컨테이너 대신 사용되는 vector : vector가 수행 속도나 크기 면에서 표준 연관 컨테이너보다 더 나은 경우가 있다.STL에 속하지 않는 표준 컨테이너 : 배열(C++ 배열),..
2015.08.25 -
딱딱한 페이지 그만(작성중)
HTML만으론 딱딱하고 지루하다,클라 웹 브라우져
2015.08.24