> 백엔드 개발 > C++ > C의 정적 멤버에 대해 \'정의되지 않은 참조\'를 얻는 이유는 무엇입니까?

C의 정적 멤버에 대해 \'정의되지 않은 참조\'를 얻는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-09 00:13:10
원래의
300명이 탐색했습니다.

Why Do I Get

정적 멤버에 대한 정의되지 않은 참조 이해

정적 데이터 멤버가 포함된 클래스로 작업할 때 "정의되지 않은 참조"와 관련된 오류가 발생할 수 있습니다. 이는 선언과 정의에 대한 명확한 이해가 부족하기 때문일 수 있습니다.

선언 및 정의

클래스 선언에서는 일반적으로 정적 데이터 멤버가 선언되지만 정의되지는 않습니다. . 이 선언은 멤버의 존재와 유형을 설정합니다. 그러나 주소가 필요한 방식으로 사용되지 않는 한 아직 구체적인 정의는 필요하지 않습니다.

정적 데이터 멤버에 대한 정의를 제공하려면 구현을 포함하는 별도의 소스 파일에 배치해야 합니다. 수업을 위해. 정의는 클래스 :: 범위 연산자 다음에 선택적 초기화가 오는 멤버 이름으로 구성됩니다.

상수 예외

const인 정적 멤버의 경우 정수형 또는 열거형 유형의 경우 클래스 선언 내에 이니셜라이저를 제공할 수 있습니다. 이는 소스 파일에 정의가 필요하지 않지만 정의에 이니셜라이저가 포함되지 않도록 보장합니다.

템플릿

클래스의 정적 데이터 멤버 템플릿은 다르게 정의됩니다. 정의는 클래스 선언과 함께 헤더 파일에 포함됩니다. 단일 정의 규칙에 대한 이 예외는 템플릿의 각 인스턴스화에 대해 정적 멤버가 한 번 정의되도록 허용합니다.

정적의 다른 용도

정적 데이터 멤버 외에, static은 클래스가 아닌 컨텍스트의 함수 및 객체에도 적용될 수 있습니다. 의미:

  • 정적 함수: 함수 범위 내에서 선언된 이러한 함수는 함수 호출 간에 값을 유지합니다.
  • 정적 개체: 네임스페이스 범위에서 선언된 이러한 개체에는 내부 속성이 있습니다. linkage.

이러한 개념을 이해하면 C에서 정적 데이터 멤버를 효과적으로 처리하고 정의되지 않은 참조와 관련된 오류를 피할 수 있습니다.

위 내용은 C의 정적 멤버에 대해 '정의되지 않은 참조'를 얻는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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