qhrrkfl2   4년 전

  • 클래스의 모든 인스턴스들이 공유하는 멤버변수.
  • 객체의 은닉성을 유지하면서 모든 인스턴스들이 접근할 수 있어야하므로 static으로 선언한다.
  • 각 인스턴스에 귀속된 값이 아니므로 this.m_StaticMember 로 호출하기보다는 CClass::m_StaticMember로 호출하는 것이 더 알맞다.
  • 객체가 생성되기 전에 이미 Static은 전역변수처럼 메모리가 할당되므로, 생성자에서 초기화해줄 수 없다.
  • 일반적인 방식으로 헤더에 선언만 하고 cpp파일에서 별개로 선언 및 초기화하는 방식을 선택한다.
여기서 왜 헤더에 선언하고 다른 cpp파일에 헤더를 선언하고 객체명::static멤버이름 = 초기화; 가 안되고
그 헤더 파일의 cpp에다 따로 선언을 해줘야 하느것이죠?
게다가 cpp에서 그런 식으로 선언및초기화를 안하면 링크오류가 뜨는데
이런 static멤버를 어떻게 링크하는지도 궁금합니다.

댓글을 작성하려면 로그인해야 합니다.