전체 글

전체 글

    항목 32: Public 상속 모형은 반드시 "is-a"를 따르도록 만들자

    - 유효하지 않은 코드를 컴파일 단계에서 막아주는 인터페이스가 좋은 인터페이스 - 클래스들 사이에 맺을 수 있는 관계로 "is-a", "has-a", "is-implemented-in-terms-of" - public 상속의 의미는 is-a입니다. 기본 클래스에 적용되는 모든 것들이 파생 클래스에 그대로 적용되어야 합니다. 왜냐하면 모든 파생 클래스 객체는 기본 클래스 객체의 일종이기 때문입니다.

    JsonCpp 사용법

    먼저, JsonCPP 라이브러리 사용법을 설명하기 전에 앞서 되새겨야 하는 게 있다. `개발자는 코드를 그대로 베껴오는 게 아니라, 내 것으로 만들고 사용해야 한다` 사실 JsonCPP 사용법은 StackOverflow나 다른 블로그에 엄청 많이 올라와있다. 그래서 필자도 예제 코드를 복붙 해서 변수명만 바꿔서 쓰고 있었지.... 그래서 JsonCPP 라이브러리 사용법을 통해서 내 것으로 만들려는 노력과 연습을 하고 개발하려고 합니다. Case 3가지에 대해서 예제코드를 작성하려고 합니다. 먼저, main문 아래와 같다. #include #include #include int main(int argc, char* argv[]) { _CrtMemState memoryState = { 0 }; _CrtMem..

    항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자

    항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자

    "가급적 전처리기보다 컴파일러를 더 가까이 하자" #define ASPECT_RATIO 1.653 이런 경우 숫자 상수로 대체된 코드에서 컴파일 에러라도 발생하게 되면 꽤나 헷갈릴 수 있습니다. 소스 코드엔 분명히 ASPECT_RATIO가 있었는데 에러 메시지엔 1.653으로 나오기 때문에 헷갈릴 수 있습니다. const double AspectRatio = 1.653; 매크로를 쓰면 코드에 ASPECT_RATIO가 등장하기만 하면 전처리기에 의해 1.653으로 모두바뀌면서 결국 Object Code 에서 1.653의 사본이 등장 횟수만큼 들어가게 되지만, 상수 타입의 AspectRatio는 아무리 여러 번 쓰이더라도 사본은 딱 한 개만 생기기 떄문입니다. 여기까지 정리하자면, 해당 매크로가 많이 사용된..

    항목 1: C++를 언어들의 연합체로 바라보는 안목은 필수

    오늘날의 C++는 다중 패러다임 프로그래밍 언어라고 불립니다. C C++는 여전히 C를 기본으로 하고 있습니다. 블록, 문장, 선행 처리자, 기본 제공 데이터 타입, 배열, 포인터 등 모든 것이 C에서 왔습니다. 객체 지향 개념의 C++ 클래스를 쓰는 C 클래스, 캡슐화 상속, 다형성, 가상 함수 등 템플릿 C++ 템플릿 메타프로그래밍 STL 네 가지의 하위 언어들이 C++를 이루고 있습니다.

    map ? unorderd_map ?

    map Container는 (key, value) pair의 원소로 구성되어있다. 가장 큰 차이는 map은 레드 블랙 트리로 구현 unordered_map은 hash 방식으로 구현 즉, map에 들어가는 원소들은 key에 따라 정렬되어 저장된다. (레드 블랙 트리를 공부해야겠다.... 했지만, 이해가 안 간다.) 검색/삽입/삭제: O(logN) unordered_map은 key의 hash값에 따라서 저장된다. 검색/삽입/삭제:O(1) 이것만 보고, unordered_map 쓰면 되겠네~로 끝나면 안 된다. 어쩔 때는, map을 쓰고, 또 언제는 unordered_map을 쓰는가? 내 주관적인 답변: 개발자가 map과 unordered_map 상황에 맞게 쓰면 될 것 같다. --> 미안합니다. map 은 ..