분류 전체보기 153

영어 공부를 미루기로 했다.

이전까지에는 영어 공부를 하고 있었다.방법은 [9등급 꼴찌, 1년 만에 통역사 된 비법]에나와있는 100LS 방법을 이용하고 있었다.간략하게 얘기하면 영화나 드라마를 100번 듣고 말하는(섀도잉) 것이었다.저자가 얘기하는 방법과 왜 이 방법이 효율적인지에 대한 근거를 듣고괜찮다고 생각되어 진행을 해왔었다. 결과적으로는 시간을 낭비했다고 본다.진행하다 중단되고 진행하다 중단되고.내 게으름이 문제였다.이럴 바에는 그 시간에 전공 공부를 하고,막학기 쯔음에 영어를 해두는 것이 더 효율적이겠다는 생각이 들었다.아직 내가 급박함, 절박함을 느끼진 못하는 것 같다. 모든 일은 충분한 '동기'가 있어야 제일 효율적으로 진행이 되는구나라는걸 깨달았다.좀 더 나의 동기가 충분히 여물었을 때, 다시 영어 공부를 진행해야겠다.

Diary 2018.01.30

[Effective C++] Item15_자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자

Item15_자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자챕터 핵심 내용실제 자원을 직접 접근해야 하는 기존 API들도 많기 때문에, RAII 클래스를 만들 때는 그 클래스가 관리하는 자원을 얻을 수 있는 방법을 열어줘야 한다.자원 접근은 명시적 변환 혹은 암시적 변환을 통해 가능하다. 안전성만 따지면 명시적 변환이 대체적으로 낫지만, 고객 편의성을 놓고 보면 암시적 변환이 괜찮다.- 실제 자원을 직접 접근해야 하는 기존 API들도 많기 때문에, RAII 클래스를 만들 때는 그 클래스가 관리하는 자원을 얻을 수 있는 방법을 열어줘야 한다.- 자원 접근은 명시적 변환 혹은 암시적 변환을 통해 가능하다. 안전성만 따지면 명시적 변환이 대체적으로 낫지만, 고객 편의성을 놓고 보면 암시적..

카테고리 없음 2018.01.30

[Effective C++] Item14_자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자

Item14_자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자챕터 핵심 내용RAII 객체의 복사는 그 객체가 관리하는 자원의 복사 문제를 안고 가기 때문에, 그 자원을 어떻게 복사하느냐에 따라 RAII 객체의 복사 동작이 결정된다.RAII 클래스에 구현하는 일반적인 복사 동작은 복사를 금지하거나 참조 카운팅을 해 주는 선으로 마무리하는 것이다. 하지만 이 외의 방법들도 가능하다.- RAII 객체의 복사는 그 객체가 관리하는 자원의 복사 문제를 안고 가기 때문에, 그 자원을 어떻게 복사하느냐에 따라 RAII 객체의 복사 동작이 결정된다.- RAII 클래스에 구현하는 일반적인 복사 동작은 복사를 금지하거나 참조 카운팅을 해 주는 선으로 마무리하는 것이다. 하지만 이 외의 방법들도 가능하다.RAII 객체..

카테고리 없음 2018.01.30

[Effective C++] Item13_자원 관리에는 객체가 그만!

Item13_자원 관리에는 객체가 그만!챕터 핵심 내용자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII객체를 사용하자.- 자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII객체를 사용하자.자원 관리에 객체를 사용하는 방법의 두 가지 특징자원을 획득한 후 자원 관리 객체에게 넘긴다. RAII(Resouce Acquisition Is Initialization)자원 관리 객체는 자신의 소멸자를 사용해서 자원이 확실히 해제되도록 한다.자원 해제를 일일이 손으로 하다 보면 언젠가 잘못을 저지르고 만다.자원을 관리하는 객체를 만들어 자원을 관리하자.

카테고리 없음 2018.01.30

[Effective C++] Item12_객체의 모든 부분을 빠짐없이 복사하자

Item12_객체의 모든 부분을 빠짐없이 복사하자챕터 핵심 내용객체 복사 함수는 주어진 객체의 모든 데이터 멤버 및 모든 기본 클래스 부분을 빠뜨리지 말고 복사해야 한다.클래스의 복사 함수 두 개를 구현할 때, 한 쪽을 이용해서 다른 쪽을 구현하려는 시도는 하지 말자.- 객체 복사 함수는 주어진 객체의 모든 데이터 멤버 및 모든 기본 클래스 부분을 빠뜨리지 말고 복사해야 한다.객체 복사 함수(object copying function) : 복사 생성자, 복사 대입 연산자. 복사되는 객체가 갖고 있는 데이터를 빠짐없이 복사한다.부분 복사(partial copy)가 일어나도 컴파일러는 일언반구조차 하지 않는다.파생 클래스에 대한 복사 함수를 정의하겠다고 결심했다면, 기본 클래스 부분을 복사해서 빠뜨리지 않도..

카테고리 없음 2018.01.29

[Effective C++] Item11_operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자

Item11_operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자챕터 핵심 내용operator=을 구현할 때, 어떤 객체가 그 자신에 대입되는 경우를 제대로 처리하도록 만들자.두 개 이상의 객체에 대해 동작하는 함수가 있다면, 이 함수에 넘겨지는 객체들이 사실 같은 객체인 경우에 정확하게 동작하는지 확인하라.- operator=을 구현할 때, 어떤 객체가 그 자신에 대입되는 경우를 제대로 처리하도록 만들자.자기 대입(self assignment)은 적법한 코드이며, 실수할 여지가 있다. 또한 눈에 잘 띠지도 않는다.a[i] = a[j]; // i와 j가 같다면? *px = *py; // px와 py가 같다면? 자기 대입이 생기는 이유는 중복참조(aliasing) 때문이다.대입 연산자는 자기 ..

카테고리 없음 2018.01.29

[Effective C++] Item10_대입 연산자는 *this의 참조자를 반환하게 하자.

Item10_대입 연산자는 *this의 참조자를 반환하게 하자.챕터 핵심 내용대입 연산자는 *this의 참조자를 반환하자.- 대입 연산자는 *this의 참조자를 반환하자.대입은 우측 연관(right-associative) 연산이다.객체에서 대입 연산자를 오버로딩할 때, 내장 타입의 그것과 동일한 기능을 수행하려면 *this의 참조자를 반환해야 한다.모든 형태의 대입 연산자에서 지켜져야 한다.

카테고리 없음 2018.01.29

[Effective C++] Item9_객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자

Item9_객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자챕터 핵심 내용생성자 혹은 소멸자 안에서 가상 함수를 호출하지 말라.- 생성자 혹은 소멸자 안에서 가상 함수를 호출하지 말라.생성자 혹은 소멸자 안에서 가상 함수를 호출하면호출 결과가 원하는 대로 돌아가지 않는다.원하는 대로 돌아가도 찝찝할 것이다.기본 클래스의 생성자가 호출될 동안에는, 가상 함수는 절대로 파생 클래스 아래로 내려가지 않는다.즉, 파생 클래스 객체의 기본 클래스 부분이 생성되는 동안은, 그 객체의 타입은 기본 클래스이다.소멸자의 경우도 마찬가지이다.대신에 필요한 정보를 매개변수로 전달하게끔 설계하자. 즉, 비가상 함수로 만들어버리자.도우미 함수를 만들어 생성자에 정보를 전달할 수도 있다.이 같은 일이 일어나는 이..

카테고리 없음 2018.01.26

[Effective C++] Item8_예외가 소멸자를 떠나지 못하도록 붙들어 놓자

Item8_예외가 소멸자를 떠나지 못하도록 붙들어 놓자챕터 핵심 내용소멸자에서는 예외가 빠져나가면 안 된다. 만약 소멸자 안에서 호출된 함수가 예외를 던질 가능성이 있다면, 어떤 예외이든지 소멸자에서 모두 받아낸 후에 삼켜 버리든지 프로그램을 끝내든지 해야 한다.어떤 클래스의 연산이 진행되다가 던진 예외에 대해 사용자가 반응해야 할 필요가 있다면, 해당 연산을 제공하는 함수는 반드시 보통의 함수(즉, 소멸자가 아닌 함수)여야 한다.- 소멸자에서는 예외가 빠져나가면 안 된다. 만약 소멸자 안에서 호출된 함수가 예외를 던질 가능성이 있다면, 어떤 예외이든지 소멸자에서 모두 받아낸 후에 삼켜 버리든지 프로그램을 끝내든지 해야 한다C++은 예외를 내보내는 소멸자를 좋아하지 않는다.소멸자 안에서 예외가 발생했다면..

카테고리 없음 2018.01.26

[Effective C++] Item7_다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자

Item7_다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자챕터 핵심 내용다형성을 가진 기본 클래스에는 반드시 가상 소멸자를 선언해야 한다.기본 클래스로 설계되지 않았거나 다형성을 갖도록 설계되지 않은 클래스에는 가상 소멸자를 선언하지 말아야 한다.- 다형성을 가진 기본 클래스에는 반드시 가상 소멸자를 선언해야 한다기본 클래스 포인터를 통해 파생 클래스 객체가 삭제될 때 그 기본 클래스에 비가상 소멸자가 들어있으면 미정의 동작을 일으킨다.가상 소멸자로 선언하지 않으면 파생 클래스 부분이 소멸되지 않는다.이를 이용해 추상 클래스를 만들 때, 마땅히 넣을 가상 함수가 없다면 순수 가상 소멸자를 이용할 수 있다. 단, 정의까지 해야 한다.- 기본 클래스로 설계되지 않았거나 다형성을 갖도록..

카테고리 없음 2018.01.26