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

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

Barbara Streisand
풀어 주다: 2024-12-09 12:44:12
원래의
394명이 탐색했습니다.

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

정적 데이터 멤버의 외부 정의가 어려우신가요? 수수께끼 풀기

IBM의 C 지식 센터에 따르면 클래스 선언 외부에 정적 데이터 멤버를 정의하는 것이 필수적입니다. 이는 다음과 같은 질문을 제기합니다. 이것이 왜 필요하며, 이 규칙을 규정하는 기본 메모리 할당 원칙은 무엇입니까?

이 문제를 해결하려면 단일 정의 규칙이라는 개념을 자세히 살펴보아야 합니다. C에서는 프로그램 내의 각 정적 개체를 정확히 한 번만 정의해야 합니다. 클래스 정의는 종종 헤더 파일에 포함되어 여러 번역 단위에 통합됩니다.

헤더 내의 정적 개체 선언도 정의인 경우 헤더 파일을 포함할 때마다 여러 정의가 발생합니다. 이는 One Definition Rule에 위배되어 파손될 가능성이 있습니다.

따라서 헤더 내에 정적 개체가 정의되지 않습니다. 대신 외부의 단일 정의가 코드베이스의 다른 곳에서 제공됩니다.

이론적으로 언어는 인라인 함수의 처리를 에뮬레이트하여 여러 정의를 하나로 병합할 수 있습니다. 그러나 C 언어는 이러한 접근 방식을 채택하지 않으므로 정적 데이터 멤버에 대한 외부 정의 규칙을 준수해야 합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿