>  기사  >  백엔드 개발  >  C의 정적 데이터 멤버를 클래스 정의 외부에서 초기화해야 하는 이유는 무엇입니까?

C의 정적 데이터 멤버를 클래스 정의 외부에서 초기화해야 하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-05 06:16:02410검색

Why Must Static Data Members in C   Be Initialized Outside the Class Definition?

정적 데이터 멤버 초기화 이해

C에서 정적 데이터 멤버는 모든 인스턴스에 공통으로 유지되는 클래스 속성을 정의하는 데 중요한 역할을 합니다. 수업. 그러나 클래스 정의 외부에서 초기화해야 하는 필요성에 대한 일반적인 질문이 제기됩니다.

왜 클래스 외부에서 초기화해야 합니까?

정적 데이터 멤버는 외부에서 초기화되어야 합니다. 두 가지 주요 이유 때문에 클래스를 사용합니다.

  • 정의와 초기화: 정적 데이터 멤버(예: 이 예에서 "int i = 0;")의 초기화는 단지 초기값 제공. 메모리에서 객체의 주소를 결정하는 실제 정의는 클래스 정의 외부에 나타나야 합니다.
  • 정의의 고유성: 정적 데이터 멤버에는 링커가 이를 할당하도록 보장하기 위해 단일 고유 정의가 필요합니다. 고유한 주소. 클래스 정의는 일반적으로 여러 개체 파일에 포함되므로 클래스 내 정의를 허용하면 이 요구 사항에 위배됩니다.

클래스의 정적 데이터 멤버가 선언 전용인 이유는 무엇입니까?

정의를 제안하는 구문에도 불구하고 클래스 내의 정적 데이터 멤버는 선언일 뿐입니다. 그 이유는 정적 데이터 멤버의 기본 특성에 있습니다.

  • 객체로부터의 독립성: 비정적 멤버와 달리 정적 데이터 멤버는 클래스 인스턴스와 독립적으로 존재하며 전체에서 해당 값을 유지합니다. 프로그램의 수명.
  • 고정 주소: 모든 정적 데이터 멤버는 메모리에 고유하고 고정된 주소를 가지고 있습니다. 이 주소는 컴파일 및 링크 시간 동안 결정됩니다.

따라서 정적 데이터 멤버의 정의는 클래스 외부에서 발생해야 하며 클래스의 모든 인스턴스에서 단일 주소로 존재하도록 해야 합니다.

위 내용은 C의 정적 데이터 멤버를 클래스 정의 외부에서 초기화해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.