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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-04 21:03:15769검색

Why Must Static Data Members Be Defined Outside the Class Declaration in C  ?

정적 데이터 멤버의 메모리 할당 의미

IBM C 지식 센터에서는 클래스 멤버 목록에 정적 데이터 멤버를 선언한다고 명시되어 있습니다. 정의가 아니므로 네임스페이스 범위의 클래스 선언 외부에서 정의해야 합니다. 이는 이것이 왜 필요한지, 그리고 메모리 할당과 관련하여 도식적인 의미가 무엇인지에 대한 의문을 제기합니다.

단일 정의 규칙에 따르면 프로그램 내의 각 정적 개체는 정확히 한 번 정의되어야 합니다. 헤더 파일의 정적 개체 선언이 정의라면 번역 단위에 걸쳐 여러 정의가 발생하여 규칙을 위반하게 됩니다.

이를 방지하려면 헤더 파일의 선언이 정의가 아닙니다. 대신, 클래스 정의 외부, 일반적으로 기본 번역 단위의 소스 파일에 단일 정의를 제공해야 합니다. 이렇게 하면 정적 개체가 단일 정의 규칙을 준수하여 전체 프로그램에서 한 번만 정의됩니다.

메모리 할당 측면에서 정적 데이터 멤버는 정적 데이터라고 알려진 메모리의 특수 세그먼트에 할당됩니다. 분절. 프로그램 시작 중에 한 번만 초기화되며 프로그램 수명 동안 해당 값을 유지합니다. 이는 객체가 생성될 때 스택이나 힙에 할당되고 객체가 소멸될 때 소멸되는 비정적 데이터 멤버와 대조됩니다.

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

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