일지

Effective C++...1

niamdank 2022. 5. 27. 08:09

클래스 범위에 상수 정의

클래스 범위에만 상수를 적용할 때는 정적(static) 멤버로 만드는 게 좋다.

이때, 헤더(.h 파일)에는 선언만 존재해야 하고 정의는 구현(.cpp 파일)에 들어가야 한다.

 

※ 클래스 컴파일 시 상수 값이 필요한 경우는 예외로 둔다.


// CostEstimate.h

class CostEstimate {

    static const double FudgeFactor;

}

// CostEstimate.cpp

const double CostEstimate::FudgeFactor = 1.35;



나열자 둔갑술(enum hack)

클래스 컴파일 시 상수 값이 필요한 경우 상수 대신 enum을 선언하여 사용할 수 있다.

 

※ enum은 쓸데없는 쓸데없는 메모리 할당이 발생하지 않는다.


class GamePlayer {

private:

    enum { NumTurns = 5 };

 

    int scores[NumTurns];

}