>백엔드 개발 >C++ >C 헤더 파일의 정적 전역 변수와 정적 데이터 멤버의 주요 차이점은 무엇입니까?

C 헤더 파일의 정적 전역 변수와 정적 데이터 멤버의 주요 차이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-30 10:29:13656검색

What's the Key Difference Between Static Global Variables and Static Data Members in C   Header Files?

헤더 파일에서 정적 전역 변수와 정적 데이터 멤버 구별

C에서 헤더 파일에 선언된 정적 변수는 정의된 변수와 상당한 차이를 나타냅니다. 클래스 내에서.

헤더의 정적 전역 변수 파일

일반적인 믿음과는 달리 헤더 파일의 정적 변수는 자체 범위를 갖지 않습니다. 헤더를 참조하는 각 소스 파일에 포함되어 각각 해당 번역 단위와 연결된 여러 인스턴스가 생성됩니다. 결과적으로 그 범위는 사용되는 번역 단위로 제한됩니다.

클래스의 정적 데이터 멤버

반면, 클래스 내에 선언된 정적 데이터 멤버는 서로 공유됩니다. 클래스의 모든 인스턴스. 이 속성은 내부 연결 개념에서 비롯됩니다. 클래스의 모든 개체는 정적 데이터 멤버에 대해 동일한 값에 액세스합니다. 정적 데이터 멤버의 초기화는 일반적으로 클래스 정의가 포함된 .cpp 파일에서 발생합니다.

키 구별

이 구별은 헤더 파일에서 static이라는 사실에 있습니다. context는 내부 연결을 나타내는 반면, 클래스 내의 static은 클래스의 모든 인스턴스에 대한 공유 멤버 변수를 나타냅니다. class.

의미

헤더 파일에서 정적 변수를 선언하는 것은 값이 충돌하는 여러 인스턴스가 발생할 수 있으므로 바람직하지 않은 경우가 많습니다. C에서 내부 연결을 달성하려면 헤더 파일의 정적 전역 변수에 의존하는 대신 익명 네임스페이스를 사용하는 것이 좋습니다.

위 내용은 C 헤더 파일의 정적 전역 변수와 정적 데이터 멤버의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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