전체 글 147

[C++ Core] POD(plain old data), 표준 레이아웃 타입(standard layout type), 간단한 타입(trivial type)

[C++ Core] POD(plain old data), 표준 레이아웃 타입(standard layout type), 간단한 타입(trivial type)PODPOD(plain old data)란, 메모리 상에서 연속적인 바이트 열을 말한다. 이따금씩 개체를 POD로 취급해야 할 때가 있다. 가령 실행 시간 다형성이나 유저가 정의한 복사 의미론 등과 같은 진보된 의미론 문법이 필요없을 때말이다. 왜냐하면, POD로 취급하면 하드웨어에서 좀 더 효율적으로 개체를 옮기거나 복사할 수 있기 때문이다. 즉, POD는 클래스 레이아웃이나 유저가 정의한 생성, 복사, 이동 의미론의 복잡성에 대한 고려 없이 '데이터 자체'로 취급할 수 있는 개체이다.POD 개체는 다음 조건을 갖춰야 한다.표준 레이아웃 타입(stan..

[C++ Core] 우측 값 레퍼런스(rvalue reference)

[C++ Core] 우측 값 레퍼런스(rvalue reference)좌측 값과 우측 값본 설명에 들어가기 전 좌측 값(혹은 좌변 값, left-value)과 우측 값(혹은 우변 값, right-value)이 무엇인지 먼저 알 필요가 있다. 좌측 값이란 대입 연산자 왼쪽에 올 수 있는 값들을 얘기한다. 즉, 메모리가 할당되는 대상들이다. 우측 값은 좌측 값을 제외한 모든 것을 얘기한다.int i3 = 0; // i3는 좌측값, 0은 우측값이다. int i4 = i3; // i3는 여기서 우측값으로 사용된다. // 즉, i3 변수에 저장된 값이 사용되는 것이다. 우측 값 레퍼런스우측 값 레퍼런스란, 이런 우측값들을 참조할 수 있다는 얘기다. 특히, 우측 값들 중 임시 값(혹은 임시 객체)들에 대해 의미가 있..

[C++ Core] 타입 추론(type deduction) - auto와 decltype

[C++ Core] 타입 추론(type deduction) - auto와 decltype타입 추론 : auto 그리고 decltype()C++11부터 C++은 구문으로부터 타입을 추론할 수 있다. 바로 auto와 decltype()이다. 이 메커니즘이 제공됨으로써 더욱 간결하고 효율적인 코드 작성이 가능해졌다. 두 메커니즘이 추론하는 타입은 모두 컴파일러가 이미 알고있는 구문의 타입만을 보고한다.auto 타입 지정자변수를 초기화할 때, 명시적 타입을 적는 대신 auto 타입 지정자를 넣을 수 있다. auto는 그것의 초기자로부터 개체의 타입을 추론하게 되는데, 타입은 변수, const나 constexpr일 수 있다. 하지만 구문의 타입은 레퍼런스가 될 수 없다. 왜냐하면 레퍼런스는 암시적으로 구문에서 참..

하나님을 들으라 - 존 파이퍼 저, 윤종석 역

하나님을 들으라 - 존 파이퍼 저, 윤종석 역하나님을 들으라책 소개현 시대 기독교 복음주의를 대표하는 지도자인 존 파이퍼의 책이다. 책은 3~5쪽 분량으로 구성된 짤막한 묵상글 48편이 엮어있다. 존 파이퍼는 이 책을 통해 복음에 대한 오해를 바로 잡아주고, 일상을 다시 바라보게 해주고, 여군 파병, 이슬람, SNS 등 현대의 다양한 이슈들에 대해 성경 안에서 바라보도록 이끌어주는 책이다.느낀점이 책을 읽게된 것은 주변 아는 전도사 누나를 통해서였다. 당시, 나는 개인적인 일로 무척이나 힘들어했는데, 그 누나가 선물해주었다.목차부터가 눈을 사로잡는다. '자기 영광만 강요하는 하나님, 이기적이다?', '하나님도 거짓말을 하신다?', '질병도 하나님 뜻이니, 근절하려 애쓸 것 없다?'. 어떤 책인지도 모르고..

카테고리 없음 2018.07.14

문장 끝내기

실생활에서 대화를 할 때, 말을 유창하게 하는 것은 무척 어렵다.나의 생각을 논리정연하게 전달을 할 수 있어야,상대방과 원활한 의사소통이 가능할 것이다.그 방법 중 하나는 '문장 끝내기'라고 생각한다. 상대방과 대화를 하는 도중,상대방의 생각이 머릿속으로 정리가 잘 안된다 싶을 때,그 사람의 표현을 유심히 들어보면'~는데', '~는데'하며 문장이 계속 이어지는 경우가 있다.문장이 점점 길어짐으로써 생각을 정리할 틈을 주지 않는 것이다. 본인도 평소에 이런 부분을 계속 의식해서문장을 온전히 끝낸 후 다시 말을 이어나가고는 한다.말을 유창하게 하는 것이 어렵다면먼저 하나의 완전한 문장을 만드는 것부터 시작해보면 어떨까 싶다.

Diary 2018.02.26

[Review] Programming Principles and Practice Using C++(비야네 스트롭스트룹 저) - 리뷰

Programming Principles and Practice Using C++(비야네 스트롭스트룹 저) - 리뷰 Programming Principles and Practice Using C++대상 독자C++을 배우려고 하는 프로그래밍 입문자책 소개C++의 창시자 비야네 스트롭스트룹이 프로그래밍 입문자를 대상으로 쓴 책이다. 저자는 C++을 이용해 (책 제목처럼)프로그래밍의 원칙과 여러 노하우를 전수해주고 있다. 이 책에서는 C++11, C++14표준을 반영하여 모던 C++을 빠르게 익힐 수 있도록 도와주고 있다. 핵심 언어에서부터 표준 라이브러리의 대부분을 살펴보게 되므로, 이 책 한 권을 뗀다면 입문 수준은 뗄 것이라 생각한다. 또한, 상향식 접근으로 입문자에겐 어려울 수 있는 로우레벨보단 하이레..

Outdated/Book 2018.02.05

Item23 - 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자

Item23 - 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자챕터 핵심 내용멤버 함수보다는 비멤버 비프렌드 함수를 자주 사용하자.- 멤버 함수보다는 비멤버 비프렌드 함수를 자주 사용하자.객체 지향 법칙은 할 수 있는 만큼 데이터를 캡슐화 하는 것이다.캡슐화되는 것들이 많아지면, 그것들을 변경할 수 있는 여유도 많아진다.어떤 데이터를 접근하는 함수가 많으면 그 데이터의 캡슐화 정도는 낮은 것이다.비멤버 비프렌드 함수는 어떤 클래스의 private 멤버 부분을 접근할 수 있는 함수의 갯수를 늘리지 않는다.이름공간을 활용하자.편의 함수 전체를 여러 개의 헤더 파일에(그러나 하나의 이름공간에) 나누어 놓으면 편의 함수 집합의 확장도 손쉬워진다.

카테고리 없음 2018.02.05

Item22 - 데이터 멤버가 선언될 곳은 private 영역임을 명심하자

Item22 - 데이터 멤버가 선언될 곳은 private 영역임을 명심하자챕터 핵심 내용데이터 멤버는 private 멤버로 선언하자.protected는 public보다 더 많이 '보호'받고 있는 것이 절대로 아니다.- 데이터 멤버는 private 멤버로 선언하자.문법적 일관성을 제공한다.해당 데이터에 관해 접근 불가, 읽기 전용, 읽기 쓰기 접근을 우리가 직접 구현할 수 있다.캡슐화(encapsulation)클래스의 불변속성을 항상 유지하는 데 절대로 소홀해질 수 없게 됨.현재의 구현을 나중에 바꾸기로 결정할 수 있는 권한을 예약함.구현상의 융통성을 전부 누릴 수 있다.데이터 멤버를 읽거나 쓸 때 다른 객체에 알림 메세지를 보낸다거나클래스의 불변속성 및 사전조건, 사후조건을 검증하거나스레딩 환경에서 동기..

카테고리 없음 2018.02.05

Item20 - '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다

Item20_'값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다챕터 핵심 내용지역 스택 객체에 대한 포인터나 참조자를 반환하는 일, 혹은 힙에 할당된 객체에 대한 참조자를 반환하는 일, 또는 지역 정적 객체에 대한 포인터나 참조자를 반환하는 일은 그런 객체가 두 개 이상 필요해질 가능성이 있다면 절대로 하지 마라.- 지역 스택 객체에 대한 포인터나 참조자를 반환하는 일, 혹은 힙에 할당된 객체에 대한 참조자를 반환하는 일, 또는 지역 정적 객체에 대한 포인터나 참조자를 반환하는 일은 그런 객체가 두 개 이상 필요해질 가능성이 있다면 절대로 하지 마라.지역 객체에 대한 참조자(혹은 포인터)를 반환하는 함수는 어떤 함수든지 프로그램의 핵폭탄이 된다.힙에 할당된 객체는 누군..

카테고리 없음 2018.02.05

[Effective C++] Item20_'값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다

Item20_'값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다챕터 핵심 내용'값에 의한 전달'보다는 '상수 객체 참조자에 의한 전달'을 택하자. 대체적으로 효율적일 뿐만 아니라 복사 손실 문제까지 막아준다.이번 항목에서 다룬 법칙은 기본제공 타입 및 STL 반복자, 그리고 함수 객체 타입에는 맞지 않다. 이들에 대해서는 '값에 의한 전달'이 더 적절하다.- '값에 의한 전달'보다는 '상수 객체 참조자에 의한 전달'을 택하자. 대체적으로 효율적일 뿐만 아니라 복사 손실 문제까지 막아준다.참조에 의한 전달 방식으로 매개변수를 넘기면 복사손실 문제(slicing problem)가 없어진다.복사손실 문제 : 파생 클래스 객체가 기본 클래스 객체로서 전달될 때, 값으로 전달되..

카테고리 없음 2018.02.03