>백엔드 개발 >C++ >C에서 정적 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?

C에서 정적 멤버를 올바르게 초기화하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-14 05:51:10189검색

How Can I Properly Initialize Static Members in C  ?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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