티스토리 뷰

Effective C++을 읽는 도중에, 이 내용은 꼭 필요한거 같아서 이렇게 기록합니다.

 

  • 새로 정의한 타입의 객체 생성 및 소멸은 어떻게 이루어져야 하는가?
    더보기
    설계에 따라서 클래스 생성자 및 소멸자의 설계가 바뀌게 됩니다. 뿐만 아니라 메모리 할당 함수(operator new, new[], delete, delete[])를 직접 작성할 경ㅇ에는 이들 함수의 설계에도 영향을 미칩니다.
  • 객체 초기화는 객체 대입과 어떻게 달려져야 하는가?
    더보기
    초기화와 대입을 다르게 두는 것이 중요한데, 각각에 해당하는 함수 호출이 다르기 때문입니다.
  • 새로운 타입으로 만든 객체가 값에 의해 전달되는 경우에 어떤 의미를 줄 것인가?
    더보기
    어떤 타입에 대해 '값에 의한 전달'을 구현하는 것은 복사 생성자이기 때문에, 복사 생성자의 구현에 따라 달라집니다.
  • 새로운 타입이 가질 수 있는 적법한 값에 대한 제약은 무엇으로 잡을 것인가?
    더보기
    전부는 아니지만 클래스의 데이터 멤버의 몇가지 조합 값만은 반드시 유효해야 합니다. 이런 조합을 가르켜 클래스의 불변속성이라고 하며, 클래스 차원에서 지켜주어야 하는 부분입니다.불변속성에 따라 클래스 멤버, 함수 안에서 해 주어야 할 에러 점검 루틴이 좌우되는데, 특히 생성자, 대입 연산자, 각종 "쓰기(setter)" 함수는 불변속성에 많이 좌우됩니다. 그 뿐 아니라 불변속성은 여러분의 함수가 발생시키는 예외에도 영향을 미치며, 혹시나 여러분이 예외 지정을 쓴다면 그 부분에도 영향을 줍니다.
  • 기존의 클래스 상속 계통망에 맞출 것인가?
    더보기
    이미 갖고 있는 클래스로부터 상속을 시킨다고 하면, 당연히 여러분의 설계는 이들 클래스에 의해 제약을 받게 됩니다. (오버라이딩, abstract 등) 특히 멤버 함수가 가상인가 비 가상인가의 여부가 가장 큰 요인입니다. 특히 소멸자가 그렇습니다.
  • 어떤 종류의 타입 변환을 허용할 것인가?
    더보기
    여러분이 만든 타입은 결국 기존의 수많은 타입들과 어울려야 하는 운명을 짊어집니다. 여러분의 타입과 다른 타입 사이에 변환 수단이 있어야 할까요? 암시적 변환을 하고 싶다면 operator Type() 이나 인자 한 개로 호출될 수 있는 비명시호출 생성자를 넣어두어야 할 것입니다. 명시적 타입 변환만 허용하고 싶을 경우에는, 해당 변환을 맡는 별도 이름의 함수를 만드되 타입 변환 연산자 혹은 비명시 호출 생성자는 만들지 말아야 합니다.
  • 어떤 연산자와 함수를 두어야 의미가 있을까?
    더보기
    클래스 안에 선선할 함수가 바로 여기서 결정됩니다. 어떤 것들은 멤버 함수로 적당할 것이고, 또 몇명은 그렇지 않을 것입니다.
  • 표준 함수들 중 어떤 것을 허용하지 말 것인가?
    더보기
    private로 선언해야 하는 함수가 여기에 해당되겠지요.
  • 새로운 타입의 멤버에 대한 접근권한을 어느 쪽에 줄 것인가?
    더보기
    어떤 클래스 멤버를 public, protected, private 영역에 둘 것인가를 결정하는 데 도움을 주게 될 질문입니다.
  • '선언되지 않은 인터페이스'로 무엇을 둘 것인가?
    더보기
    만들 타입이 제공할 보장이 어떤 종유릴까에 대한 질문입니다. 보장할 수 있는 부분은 수행 성능 및 예외 안전성, 자원 사용(lock 및 동적할당) 입니다. 이들에 대해 여러분이 보장하겠다고 결정한 결과는 클래스 구현에 있어서 제약으로 작용하게 됩니다.
  • 새로 만드는 타입이 얼마나 일반적인가?
    더보기
    실상은 타입 하나를 정의하는 것이 아닐지도 모릅니다. 여러분이 정의하는 것이 동일 계열의 타입군일 경우, 클래스 템플릿을 정의해야 할 것입니다.
  • 정말로 꼭 필요한 타입인가?
    더보기
    기존의 클래스에 대해 기능 몇 개가 아쉬워서 파생 클래스를 새로 뽑고 있따면, 차라리 간단하게 비멤버 함수라든지 템플릿을 몇 개 더 정의하는 편이 낫습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함