전체 글

전체 글

    봄밤

    봄밤은 변방의 이야기다. 요양원이라는 물리적으로는 우리와 가깝지만 심리적으로는 브라질보다도 먼 그곳의 이야기. 영경과 수환은 배신당한 이들이다. 수환은 거래처 사장과 아내에게 배신당했다. 영경은 전남편과 전시부모, 그리고 두 언니에게 배신당했다. 영경은 그 후유증으로 술을 마시다 결국 자신에게도 배신당했다. 의사도 거기에 거들었다. 그는 몸의 반응은 알코올이 가져다주는 거짓이라고 말했다. 그녀는 몸의 떨림은 물론, 자신의 감정까지 믿지 못하게 되었다. 모든 것이 환상이라고 치부해야 했다. 아니, 어쩌면 그녀 자신이 모든것을 받아들이지 못한 것일수도 있겠다. "산다는 게 참 끔찍하다. 그렇지 않니?" 작가가 표현해낸 요양원에서의 삶은 끔찍하다. 수많은 갈등과 반목, 욕망에 대한 패배 그리고 가난까지. 그곳..

    [C++ Primer Plus] 18. Visiting with the New C++ Standard

    대답해야 할 질문들 auto 타입의 type deduction 시점은 언제인가? decltype의 사용법은 어떻게 되는가? move semactics는 어떻게 사용할 수 있는가? c++11의 클래스에서 자동생성되는 함수 6개는 무엇인가? override와 final 키워드의 의미는 무엇인가? 람다식이 함수 포인터와 펑터보다 우월한 이유는 무엇인가? wrapper를 쓰는 이유는 무엇인가? variadic template은 어떻게 사용할 수 있는가? C++11 Features Revisited New Types C++11에서 64bit int 지원을 위해 long long, unsigned long long 타입을 추가됐다. 비슷한 이유로 char16_t, char32_t도 추가됐다. Uniform Init..

    [C++ Primer Plus] 16. The string Class and the Standard Template Library

    대답해야 할 질문 smart pointer의 3가지 종류를 말하고 이를 설명하시오. shared_ptr에서 발생할 수 있는 circular referencing 상황을 설명하고 해결법을 말하시오. iterator의 5가지 종류를 말하고 차이점을 설명하시오. The string class 지엽적인 내용 같아서 생략 Smart Pointer Template Classes Smart Pointer(이하 '스마트 포인터')는 포인터에 몇개 기능이 더 있는 클래스 오브젝트다. 기본적으로 dynamic memory allocation을 하면 delete를 해야 한다. 빠트리면 leak이 난다. 그러니까 leak을 피하는 방법은 프로그래머가 'delete를 해야지!'하고 기억하는 것이다. 이건 뭐 방법이라고는 할 수..

    [C++ Primer Plus] 15. Friends, Exceptions, and More

    대답해야 할 질문들 Friend class와 Friend member function의 사용법이 무엇인가? Nested class를 쓰는 이유는 무엇인가? return과 throw의 차이점이 무엇인가? exception을 레퍼런스로 catch하는 이유는 무엇인가? undefined exception과 unexpected exception이 무엇인지 설명하고 어떻게 해결할 수 있는지 설명하시오. RTTI의 세가지 구성요소는 무엇인가? C++의 explicit casting을 설명하시오. Friends 이제까지 friend function만 배웠지만, friend class도 가능하다. friend class가 마치 OOP를 해칠 것만 같은 느낌을 주지만 그렇지 않다. 그 이유는 2개다. 먼저 friend ..

    [C++ Primer Plus] 14. Reusing Code in C++

    대답해야 할 질문들 has-a 관계를 가지는 두 가지 방법은 무엇인가? 다이아몬드 상속을 할 때, 신경써줘야하는 부분은 무엇인가? template class에서 implicit/explicit instantiation과 specialization의 문법은 무엇인가? Classes with Object Members 클래스가 오브젝트 멤버를 가지는 방법은 2가지다. 오브젝트를 변수로 선언한다. (containment) protected or private으로 상속한다. Private Inheritance 상속할 때, Private으로 상속하면 base-class의 public 멤버와 protected 멤버가 derived-class의 private 멤버가 된다. 즉, 인터페이스가 똑같이 이어지는 게 아니기..

    [C++ Primer Plus] 13. Class Inheritance

    대답할 질문 상속을 통해 어떤 일을 할 수 있는가? derived-class의 constructor와 destructor는 어떻게 작동하는가? Is-a relationship은 무엇인가? dynamic binding이 default가 아닌 이유가 무엇인가? virtual function은 어떻게 작동하는가? derived-class에서 함수를 재정의할 때 무엇을 유의해야 하는가? Abstract Base Class는 어떻게 만들 수 있는가? 왜 만드는가? Class Inheritance OOP의 목적 중 하나가 코드 재사용성이다. Inheritance(상속)는 이 특성을 강화한다. C library를 생각해보자. 따로 소스 코드가 제공되지 않는 라이브러리라면 우리는 특정 함수를 입맛대로 바꾸기 어려울 것..

    [C++ Prime Plus] 12. Classes and Dynamic Memory Allocation

    Dynamic Memory and Classes C++은 Memory allocation을 runtime에 정하는 방식이다. C++은 Dynamic Memory allocation을 위해 new와 delete 연산자를 사용한다. 이로 인해, 우리는 새로운 문제를 풀어야만 한다. Special Member Functions C++은 다음 멤버 함수를 자동으로 만들어낸다. 만약 생성자가 없으면, default constructor를 만들어낸다. 따로 정의하지 않았다면, default destructor를 만들어낸다. 따로 정의하지 않았다면, copy constructor를 만들어낸다. 따로 정의하지 않았다면, = operator를 만들어낸다. 따로 정의하지 않았다면, & operator를 만들어낸다. 좀더 ..

    [C++ Prime Plus] 11. Working with Classes

    Operator Overloading Operator Overloading은 C++ Polymophism 중 하나다. Operator Overloading을 통해 사용자에게 실제로 어떻게 이런 연산이 이뤄지는지 감출 수 있다. 추상화는 OOP의 목표 중 하나다. Operator Overloading을 정의하는 문법은 다음과 같다. operator op(argument-list) 이 때, op는 새로운 symbol을 만들어낼 수 없다. 즉, operator@ 같은 건 만들 수 없다. 아래 예시를 보자. 컴파일러는 기본적으로 operator 왼쪽에 있는 오브젝트에서 정의됐다고 예상한다. district2 = sid + sara; district2 = sid.operator+(sara); // same Int..