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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-09 00:13:10306검색

Why Do I Get

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

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

선언 및 정의

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

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

상수 예외

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

템플릿

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

정적의 다른 용도

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

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

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

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

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