레거시 C++ 개체 지향 프로그래밍

#1. [레거시 C++ 개체 지향] 생성자

13 분 소요

기본 생성자가 필요하다면 명시적으로 구현하고, 필요없다면 못쓰게 만들어라. 값 생성자에서는 필요한 인자를 모두 나열하고 초기화하라. 인자가 1개인 값 생성자(형변환 생성자)는 explicit로 암시적 형변환을 차단하라. 암시적 복사 생성자가 정상...

#2. [레거시 C++ 개체 지향] 복사 대입 연산자와 nothrow Swap

11 분 소요

멤버 변수가 1개라면, 암시적 복사 대입 연산자가 정상 동작하도록 멤버 변수 정의시 스마트 포인터(shared_ptr 등)를 사용하고, 필요없다면 못쓰게 만들어라. 멤버 변수가 2개 이상이라면, 복사 대입 연산자를 예외에 안전하도록 swap()으로 구현하고, ...

#3. [레거시 C++ 개체 지향] 소멸자

9 분 소요

획득된 자원은 꼭 소멸시켜라. 암시적 소멸자가 정상 작동하도록 멤버 변수 정의시 스마트 포인터(auto_ptr, unique_ptr, shared_ptr 등)를 사용하라. 다형 소멸이 필요하면 부모 개체에 가상 소멸자를 사용하라.(가상 소멸자가 아니면 ...

#5. [레거시 C++ 개체 지향] 개체 생성(new)과 소멸(delete)

18 분 소요

개체는 new-delete 쌍으로 생성/소멸 하라. 배열은 new[]-delete[] 쌍으로 생성/소멸하라. new[]한 것을 delete 만 하면, 메모리 릭이 발생한다. 꼭 delete[]하라. delete는 널 값이면 아무 작업 안한다. 괜히 널검...

#6. [레거시 C++ 개체 지향] 멤버 변수, 초기화 리스트

11 분 소요

멤버 변수 초기화시, 생성후 대입하지 말고 초기화 리스트를 사용하라.(초기화 리스트의 순서는 멤버 변수 선언 순서에 맞춰라.) 생성자에서 필요한 인자를 모두 나열하고 초기화하라. 메모리 패딩을 고려하여 멤버 변수 선언 순서를 정하라. 암시적 복사...

#9. [레거시 C++ 개체 지향] 상속

21 분 소요

부모 개체의 멤버 함수를 오버로딩 하지 마라. 오버로딩 함수 탐색 규칙에서 제외된다. 자식 개체를 부모 개체에 대입하지 마라. 아무런 오류 없이 복사 손실 된다. 구현 코드가 없는 단위 전략 인터페이스인 경우에만 다중 상속하라. 소멸자에서 가이드...

#12. [레거시 C++ 개체 지향] 완전한 클래스

5 분 소요

잘못 사용하기엔 어렵게, 바르게 사용하기엔 쉽게 구현하라. 단일 책임 원칙(Single Responsibility Principle)을 준수하여 사용하기 쉽게 만들어라. 암시적 정의를 차단하여 의도한 동...