분류 전체보기 94

[Effective C++] Chapter 4 설계 및 선언

항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 인터페이스는 일관성 있는 네이밍, 새로운 타입을 제공하여 함수 인자로 받도록 하여 잘못된 동작 사용 못하도록 하기, 자원 관리 책임을 사용자에게 주지 않기 등이 있다. shared_ptr 을 사용하면 자원에 대한 권한은 라이브러리에 있게 된다. 항목 19: 클래스 설계는 타입 설계와 똑같이 취급하자 클래스를 설계할 때는 기본 타입을 정의하는 것만큼 고민을 하자. 책에 정리되어 있는 모든 고려사항을 참고하여 클래스를 짜 보도록 하자. 항목 20: '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달'방식을 택하는 편이 대개 낫다 함수를 호출할때 기본타입을 제외하고는 복사 생성자가 호출될 가능성을 없애기 위해, 상수객체 참조자..

[Effective C++] Chapter 3 자원 관리

항목 13: 자원 관리에는 객체가 그만! 스마트 포인터를 활용하여 별도로 객체 관리를 하지 않아도 되도록 만들자. std::auto_ptr, std::shared_ptr 을 활용 항목 14: 자원 관리 클래스의 복사 동작에 진지하게 고찰하자 RAII 객체를 복사할 때, 복사를 수행한 후 원래 객체가 해제가 되어 버리면 복사를 한 객체 쪽에서 해제 된 객체를 가질 가능성이 있다. 레퍼런스 카운터를 쓰거나 복사를 금지하는 방법을 활용하자 항목 15: 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자 캡슐화는 사용하기 편하고 실수를 줄이기 위해 만든 것이지, 반드시 데이터를 무조건 접근 금지하도록 하기 위한 것은 아니다. 암시적 변환이나 Get() 함수등을 통해 접근을 가능하도록 만들면 해..

[감상평] 존 말코비치 되기 - 타인이 되고 싶은 사람들

존 말코비치의 시선으로 세상을 보기 위해서는 낮은 천장의 층으로 고개를 숙이고 들어가야 된다. 낮은 천장의 층은 남들보다 작은 키를 가진 여성이 이세상의 모든 것들이 키가 작은 사람을 위해서는 만들어 져 있지 않다는 이유로 만들어 지게 된 층이다. 낮은 천장을 고개를 숙이고 들어가고 나면 존 말코비치의 의식에 들어갈 수 있는 관문이 나오게 되는데 이 관문은 무릎을 꿇고 기어들어가야지만 갈 수 있는 공간이다. 이 공간까지 가는 이들은 존 말코비치의 시선에서 살아보고 싶은 사람들이다. 타인이 되기 위해 타인과의 비교로 만들어진 낮은 천장을 숙여 걸어가고, 관문을 기어가야 비로소 타인이 될 수 있다. 가까스로 타인이 된다 한들 곧바로 하늘에서 내동댕이 쳐지고 만다. 작중에서 인형 조종사를 하는 크레이그는 타인..

[서평] 그림자를 판 사나이 ( 페터 슐레밀의 기이한 이야기 )

'그림자를 판 사나이' 라고 의역되기도 하는 아델베르트 폰 샤미소의 '페터 슐레밀의 기이한 이야기.' 책 속에서 주인공인 '슐레밀'은 '회색 코트를 입은 사나이' 를 만나 금화가 무한대로 나오는 주머니와 자신의 그림자를 교환하는 거래를 하게 된다. 슐레밀은 무한한 금화로 부귀영화를 누리게 되지만, 그림자가 없다는 이유만으로 모든 사람들에게 질타를 받고 무시를 당하게 된다. 자신의 충실한 하인 '벤델' 은 자신만을 이해하고 그림자를 되찾을 수 있도록 도와주지만, 슐레밀은 사랑을 하더라도 그림자가 없다는 이유로 거절당하고, 길을 가더라도 그림자가 없다는 이유로 비난받기에 자기 마음대로 집밖을 나서지도 못한다. 슐레밀은 그림자를 찾기 위해 회색 코트의 사나이를 찾아 내지만 회색 코트를 입은 사나이는 영혼을 내..

[서평] 당신이 지갑을 열기 전에 알아야 할것들

처음 책을 보았을 때는 경제 또는 재테크 관련 서적인줄 알고 구매하였다. 책 제목만 보고 부제는 보지 않았기 때문이다. 그렇게 서론을 읽으면서 이 책이 돈을 어떻게 모으고 관리하는지가 아닌, 돈을 어떻게 써야 최대한 행복하게 쓸 수 있느냐에 대한 내용을 다루는 책인 것을 알게 되었다. 이 책은 서론에서 거의 모든 내용을 다룬다고 해도 될 것 같다 생각했다. '만족을 극대화하는 소비 방법'을 각 장의 주제로 나누어 놓았는데 서론에서 각 장들을 간략하게 요약하고 있다. 서론에서 정리한 내용들만 바로 실천에 옮긴다면 책을 굳이 안 읽어도 되지 않을까 싶을 정도로 로 서론을 본문의 간단한 요약으로 채워 놓았다. '만족을 극대화하는 소비 방법' 은 5 가지인데, 이는 다음과 같다 1. 체험을 구매하라 멋진 자동차..

[서평] 하버드 첫 강의 시간관리 수업

'하버드 첫강의 시간관리 수업'은 제목처럼 '시간 관리'에 대한 내용을 주로 이룬다. 평소에 나는 '시간관리'이 어떤 개념인지 궁금했었다. 얼핏 듣기에는 알 것 같지만 정확히 시간관리란 무엇을 관리하는 것인지 궁금증이 들어 이 책을 읽게 되었다. 이 책을 읽고 나서 내가 이해한 '시간관리'란 개념은 다음과 같다. 시간 한순간 한순간에 온전히 집중하고 의식하면서 의미없이 보내는 시간을 줄이고자 노력하는 것. 언제나 시험기간만 되면 엄청난 집중력과 위기감을 가지고 공부하게 되는데, 그때마다 '언제나 이런 식으로 공부하면 엄청나게 성장 할 수 있지 않을까?' 라고 생각하곤 했었다. 생각만 하고 언제나 행동으로 옮기지는 않았지만, 지금 생각하면 그런 집중력을 가지고 노력의 밀도를 높히려고 노력하는 자세를 갖는 ..

[Effective C++] Chapter 2 생성자, 소멸자 및 대입 연산자

항목 5 : C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자.이유 : 컴파일러는 클래스의 생성자, 소멸자 등을 자동으로 만들어 내는데, 만약 멤버 변수로 포인터 등이 존재할 경우. 완전한 깊은 복사를 수행하지 않게 된다. 해결 : 클래스 선언시 생성자, 복사 생성자, 복사 대입 생성자, 소멸자, 이동 생성자( c++ 11) 이동 복사 생성자 (c++ 11) 등을 명시적으로 선언해두자. 항목 6 : 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자이유 : 구조적으로 복사되면 안되는 경우 ( 단 하나만 존재하는 클래스 등 ) 클래스를 사용하는 쪽에서 자동으로 생성된 복사 생성자를 이용해 버릴 수 있다. 해결 : 자동으로 생성되는 함수들을 private 로 선언하거나, =..

[C++] C++에서 문자열 줄단위로 받기

알고리즘 문제를 풀면서 Input을 벡터 파라미터로 주는것이 아니라 문자열로 주는 경우, 또는 문자열 자체를 처리하는 알고리즘인 경우에 C++로 풀어야 되는경우, 익숙하지 않으면 문자열을 읽는 부분에서부터 문제점이 생긴다. Input 42 3 4 5 6 8 2 4 1 2 31 1 2 31 1 4 *첫번째 값은 줄 수 N, 그다음부터 N개의 줄에 랜덤한 갯수의 값들이 들어온다. 위와같이 문자열이 주어지면 C++ 초보자의 입장에서 처리하기가 난감하다. cin 으로 처음 표준입출력을 배운 경우 공백과 개행문자를 무시해버리는 특성 때문에 어떻게 현재 라인을 구분해야할지 잘 모르게 되고, 다른 방법을 찾아보면서 getline() ,cin.getline() 등의 함수를 찾아보게 되는데 왜 또 그렇게 사용법은 많고 ..

개발자의 길 2018.09.29

[C++] C++에서 string 문자열을 받아와 split 하기

C++로 알고리즘 문제를 풀다 보면 다른 언어에 비해 구현하기 불편한 부분이 은근 많다. Java의 split 함수와 같이 작관적이고 쓰기 간편한 함수가 있었으면 좋겠지만, C++에서는 되게 다양한 방법으로 split을 할 수가 있어서 뭘 선택해야할지 꽤나 어려웠다. 그래서 정보를 여러곳에서 찾아보고, 괜찮은 방법을 몇가지 소개하고자 한다. 1. istringstream 과 getline 함수를 사용 istringstream 은 sstream 을 include 하여 사용할수있는 스트림 클래스이다. 사용법은 다음과 같다. 12345678910111213141516171819#include#include#include>#include using namespace std; int main(){ string a..

개발자의 길 2018.09.15
반응형