전체 글
람다 표현식 (lambda expression)
C++11 부터, 람다 표현식은 함수가 호출 되거나, 함수에 arguments를 전달할 때 anonymous function objects (closures)를 정의 하기 편리한 방법입니다. 람다는 비동기 함수 또는 알고리즘에 전달되는 몇 줄 코드를 캡슐화합니다. 사용 예시 // Lambda 사용 int my_mod = 8; transform(in.begin(), in.end(), out.begin(), [my_mod](int v) -> int { return v % my_mod; }); 개시자 (introducer), 인자(parameters), 반환 타입(return type), 그리고 함수의 몸통(statement) - 개시자 [ ] 괄호 안에 외부 변수를 넣는다면, 람다 함수가 이를 캡쳐 해서, ..
항목 8: 0과 NULL보다 nullptr를 선호하라
리터럴 0은 int이지 포인터가 아니다. NULL도 포인터 형식이 아니라는 점. void f(int);//f의 3 가지 오버로딩 void f(bool); void f(void*); f(0);//f(int) 호출 f(NULL)//보통 f(int) 호출 nullptr의 장점은 정수 형식이 아니다. 사실 포인터 형식도 아니다? 이 책보면서, 아쉬운건 번역이나 뭔가 어순?이 안 맞음. 내 맞춤법 마냥 답 없음 nullptr의 실제 형식은 std::nullptr_t인데, std::nullptr_t 자체는 다시 "nullptr의 형식"으로 정의(순환 정의) f(nullptr);//f(void*) 오버로딩 호출 nullptr 은 코드의 명확성 높여준다. auto result = findRecord(...); if(r..
OpenGL 공부 시작!
OpenGL 을 공부하기 시작합니다. 현재 개발하는 특성상 OpenGL이 기본인데, 하나도 모른다. 그래서 공부시작합니다. https://www.youtube.com/c/FlyHeavensky Dr. Bean의 코딩교실 부경대학교 컴퓨터공학과의 장원두 교수입니다. 코딩, 프로그래밍에 대한 강좌를 올리고 있습니다.^^ www.youtube.com 부경대학교 장원두 교수님이 유튜브로 공개하신게 있어서 유튜브로 보고 진행하려고합니다. 추천하시는 책 / 블로그 있으면 언제든지 추천주세요!
항목 51: new 및 delete를 작성할 때 따라야 할 기존의 관례를 잘 알아 두자
기존의 관례에 잘 맞는 operator new를 구현하려면 다음의 요구사항만큼은 기본으로 지켜야 합니다. - 반환 값이 제대로 되어 있어야 합니다. - 가용 메모리가 부족할 경우에는 new 처리자 함수를 호출(항목 49) - 크기가 없는 (0byte) 메모리 요청에 대한 대비책 - 기본 형태의 new가 가려지지 않도록 해야합니다. void* operator new(std::size_t size) throw(std::bad_alloc) { using namespace std; if(size == 0) { size = 1; } while (true) { //size 바이트를 할당 if(/*할당 성공*/) { return (/*할당된 메모리에 대한 포인터*/); } //할당 실패 시, 현재 new 처리자 함수..
항목 49: new 처리자의 동작 원리를 제대로 이해하자
operatore new 함수는 예외를 던지게 되어 잇습니다. 메모리 할당이 제대로 되지 못한 상황에 대한 반응으로 operator new가 예외를 던지기 전에, 이 함수는 사용자 쪽에서 지정할 수 있는 에러 처리 함수를 우선적으로 호출하도록 되어 있는데, 이 에러 처리 함수를 가리켜 new 처리자라고 합니다. set_new_handler는 new_handler를 받고 new_handler를 반환하는 함수입니다. 즉, set_new_handler가 받아들이는 new_handler 타입의 매개변수는 요구된 메모리를 operator new가 할당하지 못했을 때 operator new가 호출할 함수의 포인터입니다. new 처리자 함수가 다음 동작 중 하나를 꼭 해주어야함. - 사용할 수 있는 메모리를 더 많이..