SW/C++

C++ : 헤더파일 초기화 : 정적 변수, 정적 상수 : 사용법, 활용법, 팁

얇은생각 2020. 4. 14. 07:30
반응형

 

class Vector
{
  // ...
private:
  int mX = 0; // not error
  int mY = 0; // not error
  
  const static int mDimension = 2; // not error
  static int mCount = 0; // error
}

 

클래스 멤버 변수를 선언할 떄, 위와 같이 선언이 가능합니다. 다만, 정적 변수를 선언하는 것은 아직 지원하지 않는다고 합니다. 

 

 

class Vector
{
  // ...
private:
  static int mCount;
};

int Vector::mCount = 0;

 

따라서 정적 변수를 만족시키기 위해서는 위와 같이 선언하고 활용해야 합니다. 그렇다면 이러한 클래스 변수 선언 방식들을 적극적으로 활용해도 괜찮을까요?

 

 

선별적으로 사용해야 한다고 합니다. 커다란 코드베이스에서는 안쓰는게 좋을 수 있습니다. 헤더를 변경할 때마다 헤더를 인클루드 하는 모든 cpp 파일을 다시 빌드해야 합니다. 이 헤더를 다른 헤더들이 인클루드할 수 있고, 그 헤더들을 다시 다른 헤더들이 인클루드 합니다. 그 헤더들을 다시 다른 헤더들이 인클루드를 합니다. 즉, 의존성에 문제가 생길 수 있습니다. 

모듈 시스템이 C++20에 들어올 것으로 보여지고 있습니다. 과연 C++20에서는 해당 문제들을 해결해 줄 수 있을지 기대가 됩니다.

반응형