2013-10-19 3 views
0
struct a{static int z;}l; 
(a is declared at file scope)  

이니셜 라이저 목록을 사용하여 z를 초기화 할 수 없습니다. 정적 struct 멤버는 무엇을 의미합니까?구조체 정적 멤버 의미/정의

z (이름)은 외부 연결과 공용 액세스가 있습니까?

는 (나는 왜 캔트 나는 초기화 .. 당신이 그것에서 범위와 그룹을 파일 (과) 객체를 통해 공공 액세스 할 수있는?주는 의미 생각?) 또한

.... 내가 무엇을 가지고 있다면 클래스의 정적 구조체 멤버? class/struct

답변

12

static 회원은 class/struct의 구체적인 예를 들어 특정하지 않은 회원입니다. 특별한 경우는 별개로 컴파일 유닛 중 하나에서 거의 항상 명시 적으로 초기화되어야합니다. 그런 다음이 정의 된 곳에서, 네임 스페이스를 사용하여 액세스 할 수

#include <iostream> 

struct a { 
    static int z; 
    int i; 
} l; 

int a::z = 0; // initialization 

int main() { 
    a::z = 3; 
    l.i = 4; 
    std::cout << a::z << ' ' << l.i; 
    return 0; 
} 

3 4 출력한다.


는 "나는 초기화 목록을 사용하여 Z를 초기화하지 못할."
초기화 목록을 사용하여 해당 인스턴스가 생성 될 때까지 특정 인스턴스의 멤버를 초기화하는 데 사용됩니다. 정적 멤버는 다른 방식으로 생성되고 초기화됩니다.

"클래스에 정적 struct 멤버가 있다면?"
유일한 차이점은 class에 정의 된 구성원이 인 struct과 달리 기본적으로 private입니다.

+0

what ??????????? – user2892942

+0

그 때의 요점은 무엇입니까? – user2892942