> 백엔드 개발 > C++ > 본문

C에서 Java 정적 블록을 어떻게 모방할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-10-27 02:33:30
원래의
739명이 탐색했습니다.

How Can I Mimic Java Static Blocks in C  ?

Java 정적 블록용 C 관용어

Java 정적 블록은 클래스의 정적 멤버를 초기화하는 편리한 방법을 제공합니다. 그러나 C에는 클래스 내에 명시적인 정적 블록 메커니즘이 부족합니다. 이 문제를 해결하기 위해 두 시나리오 모두에 대해 동등한 솔루션을 제시합니다.


  1. 프로세스 로드 시 초기화

  2. 클래스 인스턴스화 시 초기화< /li>

옵션 1: 프로세스 로드 시 초기화

C는 변환 단위에서 클래스 외부의 정적 블록을 허용합니다. 범위. 매크로 기술을 사용하여 다음과 같은 블록을 정의할 수 있습니다.

<code class="cpp">static_block {
    // Initialization code
}</code>
로그인 후 복사

옵션 2: 클래스 인스턴스화 시 초기화

이 시나리오에서는 다음을 달성할 수 있습니다. 싱글톤 디자인 패턴의 변형을 사용하여 클래스 내에서 정적 멤버 초기화:

<code class="cpp">class StaticInitialized {
    static bool initialized;
    virtual void initializeStatics();
};

class MyClass : private StaticInitialized {
    static int field1;
    static int field2;

    void initializeStatics() {
        // Initialization code
    }
};</code>
로그인 후 복사

이 접근 방식은 클래스의 첫 번째 인스턴스화 시 호출되는 비정적 생성자를 활용하여 정적 멤버를 초기화합니다.

구현 세부정보

해결책에는 함수 호출로 초기화되는 더미 변수를 정의하는 것이 포함됩니다. 정적 블록 코드는 이 함수의 본문 내에 배치됩니다. 이렇게 하면 다른 정적 블록과의 충돌이 방지됩니다. 사용된 매크로 기계는 각 블록의 고유성을 보장합니다.

위 내용은 C에서 Java 정적 블록을 어떻게 모방할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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