인프런 커뮤니티 질문&답변

김성범님의 프로필 이미지
김성범

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

static과 싱글톤

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

해결된 질문

작성

·

247

·

수정됨

1

20231005_153257.jpg

main() 함수 내에서

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

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

라는 오류가 뜨더라구요.

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

 

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

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

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

class UserManager

{

public:

static UserManager um;

...

}

UserManager UserManager::um;

 

 

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

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

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

김성범님의 프로필 이미지
김성범
질문자

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

 

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

44333.png

김성범님의 프로필 이미지
김성범

작성한 질문수

질문하기