분류 전체보기(603)
-
멤버 함수보단 비멤버 비프렌드 함수를!(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 -
함수에서 객체 반환시 참조로 X(effective c++ 21)
참조에 의한 전달모든 경우에서 참조에 의한 전달만을 사용하려고 해서는 안 된다. 문제점‘값에 의한 전달’에 숨겨진 효율 문제를 알아챈 후에, 나머지 모든 부분에서 ‘참조에 의한 전달’만을 사용하려 할 경우 문제가 생긴다.실제로 있지도 않은 객체의 참조자를 넘기려는 상황이 올 수도 있다. 새로운 객체를 반환operator*가 참조자를 반환하도록 만들어졌다면, 이 함수가 반환하는 참조자는 반드시 이미 존재하는 Rational 객체의 참조자여야 한다. 문제점참조자는 존재하는 객체에 붙는 ‘또 다른’ 이름이다.반환될 객체에 대한 참조자를 operator*에서 반환할 수 있으려면, 그 객체를 직접 생성해야 한다.함수 수준에서 새로운 객체를 만드는 방법은 2가지이다.( 스택에 생성, 힙에 생성 ) 스택에 만드는 방..
2015.08.23 -
클래스 설계는 타입 설계와 같이 보자(effective c++ 19)
효과적인 클래스 설계객체 지향 프로그래밍 언어와 마찬가지로 C++에서 새로운 클래스를 정의한다는 것은 새로운 타입을 하나 정의하는 것과 같다. 고려 사항문법(syntax)이 자연스럽고 의미구조(semantics)가 직관적이며, 효율적인 구현 클래스 설계에 신경써야 할 부분새로 정의한 타입의 객체 생성 및 소멸은 어떻게 이루어져야 하는가?- 객체 지향 프로그래밍 언어와 마찬가지로 C++에서 새로운 클래스를 정의한다는 것은 새로운 타입을 하나 정의하는 것과 같다. 객체 초기화는 객체 대입과 어떻게 달라야 하는가?- 생성자와 대입 연산자의 동작 및 둘 사이의 차이점을 결정짓는 요소이다..- 초기화와 대입을 헷갈리지 않는 것이 가장 중요하다. 새로운 타입으로 만든 객체가 값에 의해 전달되는 경우에 어떤 의미를 ..
2015.08.20