목록Categories (1096)
KoreanFoodie's Study
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 4 : 연역된 형식을 파악하는 방법을 알아두라 핵심 : 1. 컴파일러가 연역하는 형식을 IDE 편집기나 컴파일러 오류 메시지, Boost TypeIndex 라이브러리를 이용해서 파악할 수 있는 경우가 많다. 2. 일부 도구의 결과는 유용하지도 않고 부정확할 수 있으므로, C++ 의 형식 연역 규칙들을 제대로 이해하는 것은 여전히 필요한 일이다. 형식 연역 정보를 얻는 방법은 세 가지 시점으로 분류할 수 있다. 1. IDE 편집기 2. 컴파일러의 진단 메시지 decltype 을 사용하면 다음과 같은 경우, 타입을 컴파일 타임에 알아낼 수..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 3 : decltype 의 작동 방식을 숙지하라 핵심 : 1. decltype 은 항상 변수나 표현식의 형식을 아무 수정 없이 보고한다. 2. decltype 은 형식이 T 이고 이름이 아닌 왼값 표현식에 대해서는 항상 T& 형식을 보고한다. 3. C++14 는 decltype(auto) 를 지원한다. decltype(auto)는 auto 처럼 초기치로부터 형식을 연역하지만, 그 형식 연역 과정에서 decltype 의 규칙들을 적용한다. 컨테이너의 operator[ ] 반환 형식을 손쉽게 표현해 보자. template auto auth..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 2 : auto 의 형식 연역 규칙을 숙지하라 핵심 : 1. auto 형식 연역은 대체로 템플릿 형식 연역과 같지만, auto 형식 연역은 중괄호 초기치가 std::initializer_list 를 나타낸다고 가정하는 반면, 템플릿 형식 연역은 그렇지 않다는 차이가 있다. 2. 함수의 반환 형식이나 람다 매개변수에 쓰인 auto 에 대해서는 auto 형식 연역이 아니라 템플릿 형식 연역이 적용된다. 한 가지 기이한 예외를 빼면, auto 형식 연역이 곧 템플릿 형식 연역이다. 그 기이한 한 가지 다른 예외를 보자. #include #i..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 1 : 템플릿 형식 연역 규칙을 숙지하라 핵심 : 1. 템플릿 형식 연역 도중 참조 형식의 인수들은 비참조로 취급된다. 즉, 참조성이 무시된다. 2. 보편 참조 매개변수에 대한 형식 연역 과정에서 왼값 인수들은 특별하게 취급된다. 3. 값 전달 방식의 매개변수에 대한 형식 연역 과정에서 const 또는 volatile(또는 그 둘 다인) 인수는 비 const, 비 volatile 인수로 취급된다. 4. 템플릿 형식 연역 과정에서 배열이나 함수 이름에 해당하는 인수는 포인터로 붕괴한다. 단, 그런 인수가 참조를 초기화하는데 쓰이는 경우,..
이득우님의 '이득우의 게임수학' 책을 보며 좋은 내용을 정리하고 있습니다. 더 자세한 내용이 궁금하시다면, 책을 구매해 직접 읽어보시기를 추천드립니다! 행렬을 이용한 회전변환 행렬을 이용해 어떤 물체를 반시계 방향으로 90 도 회전시키는 행렬을 구한다고 생각해 보자. 위의 그림을 보면, 두 벡터가 다음과 같이 변환된다. 표준기저벡터 e1 : (1, 0) -> (0, 1) 표준기저벡터 e2 : (0, 1) -> (-1, 0) 따라서 반시계로 90 도 회전 변환을 수행하는 행렬을 다음과 같이 설계할 수 있다. 시계방향으로 90 도 회전을 하는 경우는 다음과 같을 것이다 : 사실 90 도 회전의 경우는 행렬을 사용하지 않고 간단하게 다음과 같이 구할 수 있다. - 시계 방향으로 90 도 회전 : (x, y) ..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 55 : Boo子有親! 부스트를 늘 여러분 가까이에 핵심 : 1. 부스트는 C++ 표준화에 있어 영향력 있는 오픈 소스 C++ 라이브러리 개발 모임이다. 2. 부스트의 다양한 라이브러리를 살펴보자 부스트 라이브러리는 엄격한 심사를 통해 높은 품질의 코드를 제공한다. 예시는 정말 다양한데, 웹사이트를 들어가서 다양한 라이브러리를 구경해 보자!
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 54 : TR1 을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자 핵심 : 1. 최초에 상정된 C++ 표준 라이브러리의 주요 구성요소는 STL, iostream, 로케일 등이다. 2. TR1 이 도입되면서 추가된 것은 스마트 포인터, 일반화 함수, 해시 기반 컨테이너, 정규 표현식 등등이다 3. TR1 자체는 단순히 명세서이며, TR1 기능을 사용하기 위해서는 명세를 구현한 코드를 구해야 한다. 대표적인 자료처 중 한 군데가 바로 부스트이다. 사실 해당 책은 현재 시점(2022년) 으로부터 7년 전에 나온 개정판이므로, 책에서 ..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 53 : 컴파일러 경고를 지나치지 말자 핵심 : 1. 컴파일러 경고를 쉽게 지나치지 말자. 경고 메시지를 내지 않는 코드를 짜자. 2. 컴파일러 경고에 너무 기대지는 말자! 컴파일러마다 경고 메시지는 달라질 수 있다! 다음 예시를 보자. class B { public: virtual void f() const; }; class D: public B { public: // f 는 재선언된 것이 아니라, 아예 가리고 있음 virtual void f(); }; 컴파일러는 위 경우, "warning: D::f() hides virtual B:..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 52 : 위치지정 new 를 작성한다면 위치지정 delete 도 같이 준비하자 핵심 : 1. operator new 함수의 위치지정(placement) 버전을 만들 때는, 이 함수와 짝을 이루는 위치지정 버전의 operator delete 함수도 꼭 만들자. 이 일을 빼먹으면, 찾아내기도 힘들고 생겼다가 안 생겼다 하는 메모리 누출 현상을 경험하게 된다. 2. new 및 delete 의 위치지정 버전을 선언할 때는, 의도한 바도 아닌데 이들의 표준 버전이 가려지는 일이 생기지 않도록 주의하자. 아래 코드를 보자. Widget *pW =..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 51 : new 및 delete 를 작성할 때 따라야 할 기존의 관례를 잘 알아 두자 핵심 : 1. 관례적으로, operator new 함수는 메모리 할당을 반복해서 시도하는 무한 루프를 가져야 하고, 메모리 할당 요구를 만족시킬 수 없을 때 new 처리자를 호출해야 하며, 0바이트에 대한 대책도 있어야 한다. 클래스 전용 버전은 자신이 할당하기로 예정된 크기보다 더 큰(틀린) 메모리 블록에 대한 요구도 처리해야 한다. 2. operator delete 함수는 널 포인터가 들어왔을 때 아무 일도 하지 않아야 한다. 클래스 전용 버전의 ..