정적 멤버에 대한 정의되지 않은 참조 이해
정적 데이터 멤버가 포함된 클래스로 작업할 때 "정의되지 않은 참조"와 관련된 오류가 발생할 수 있습니다. 이는 선언과 정의에 대한 명확한 이해가 부족하기 때문일 수 있습니다.
선언 및 정의
클래스 선언에서는 일반적으로 정적 데이터 멤버가 선언되지만 정의되지는 않습니다. . 이 선언은 멤버의 존재와 유형을 설정합니다. 그러나 주소가 필요한 방식으로 사용되지 않는 한 아직 구체적인 정의는 필요하지 않습니다.
정적 데이터 멤버에 대한 정의를 제공하려면 구현을 포함하는 별도의 소스 파일에 배치해야 합니다. 수업을 위해. 정의는 클래스 :: 범위 연산자 다음에 선택적 초기화가 오는 멤버 이름으로 구성됩니다.
상수 예외
const인 정적 멤버의 경우 정수형 또는 열거형 유형의 경우 클래스 선언 내에 이니셜라이저를 제공할 수 있습니다. 이는 소스 파일에 정의가 필요하지 않지만 정의에 이니셜라이저가 포함되지 않도록 보장합니다.
템플릿
클래스의 정적 데이터 멤버 템플릿은 다르게 정의됩니다. 정의는 클래스 선언과 함께 헤더 파일에 포함됩니다. 단일 정의 규칙에 대한 이 예외는 템플릿의 각 인스턴스화에 대해 정적 멤버가 한 번 정의되도록 허용합니다.
정적의 다른 용도
정적 데이터 멤버 외에, static은 클래스가 아닌 컨텍스트의 함수 및 객체에도 적용될 수 있습니다. 의미:
이러한 개념을 이해하면 C에서 정적 데이터 멤버를 효과적으로 처리하고 정의되지 않은 참조와 관련된 오류를 피할 수 있습니다.
위 내용은 C의 정적 멤버에 대해 '정의되지 않은 참조'를 얻는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!