• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

함수 내 정적 변수 vs 클래스 내 정적 변수 질문 드립니다.

23.10.05 15:28 작성 23.10.05 15:33 수정 조회수 166

1

20231005_153257.jpg

main() 함수 내에서

(UserManager 함수 내에서 선언한) static UserManager um에 접근을 시도할 때

class UserManager에 um 멤버가 없습니다.

라는 오류가 뜨더라구요.

이 오류가 뜨는 이유가 함수 내에서 선언한 정적 변수는 함수를 통해서만 접근할 수 있기 때문인가요?

 

그렇다면 위의 함수 내에서 정적 변수를 선언한 방식과

아래처럼 class 내에 정적 변수를 선언했을 때

정적 변수가 생성되는 위치와 생성 과정이 다른 건가요?

class UserManager

{

public:

static UserManager um;

...

}

UserManager UserManager::um;

 

 

 

답변 1

답변을 작성해보세요.

0

이 오류가 뜨는 이유가 함수 내에서 선언한 정적 변수는 함수를 통해서만 접근할 수 있기 때문인가요?
네!

그렇다면 위의 함수 내에서 정적 변수를 선언한 방식과
아래처럼 class 내에 정적 변수를 선언했을 때
정적 변수가 생성되는 위치와 생성 과정이 다른 건가요?

그렇습니다. 함수 내부에 있는 static 변수는
맨 처음 함수가 실행될 때 생성되고,
그렇지 않은 static은 프로그램 구동 시점에 만들어집니다.

김성범님의 프로필

김성범

질문자

2023.10.05

정말로 생성 위치가 다르네요, 감사합니다!

 

혹시 다른 분께 도움이 될까하여 남깁니다.

44333.png