C의 정적 멤버 초기화
C에서 클래스 정의 내에 정적 멤버를 정의하는 것은 혼란스러운 주제일 수 있습니다. 이 글에서는 C의 정적 변수 초기화에 관한 질문을 다루면서 클래스 내 초기화가 금지되는 이유와 이를 올바르게 초기화하는 방법을 살펴봅니다.
1. 클래스 내 초기화 금지
아래와 같이 클래스 선언 내에 공용 정적 변수를 정의하려고 하면 컴파일 오류가 발생할 수 있습니다.
public: static int j = 0;
이것은 C 표준은 오류 메시지에 명시된 대로 클래스 선언 내에서 const가 아닌 정적 멤버의 초기화를 금지합니다. "ISO C는 const가 아닌 정적 멤버의 클래스 내 초기화를 금지합니다. 'j'."
2. Const 멤버의 허용되는 초기화
const가 아닌 정적 멤버와 달리 const 정적 멤버는 클래스 선언 내에서 초기화될 수 있습니다. 이는 const 멤버가 컴파일 타임 상수로 간주되고 컴파일 타임에 알려진 값으로 초기화되어야 하기 때문에 허용됩니다.
3. C에서 정적 변수 초기화
C에서 정적 변수는 C에서처럼 자동으로 0으로 초기화되지 않습니다. C에서 정적 변수를 초기화하려면 클래스 외부에서 초기 값을 명시적으로 정의해야 합니다. 선언은 일반적으로 별도의 소스 파일(.cpp)에 있습니다.
예를 들어 위에 선언된 정적 변수 j를 초기화하려면 코드를 다음과 같이 수정합니다. 다음과 같습니다:
// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
결론
C에서는 외부 정적 변수를 초기화하는 데 유연성이 필요하기 때문에 const가 아닌 정적 멤버의 클래스 내 초기화가 금지됩니다. 클래스 선언. 그러나 Const 정적 멤버는 클래스 선언에서 초기화될 수 있습니다. C에서는 정적 변수가 자동으로 0으로 초기화되지 않습니다. 초기값은 명시적으로 정의되어야 합니다.
위 내용은 C에서 정적 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!