해결된 질문
작성
·
247
·
수정됨
1
main() 함수 내에서
(UserManager 함수 내에서 선언한) static UserManager um에 접근을 시도할 때
class UserManager에 um 멤버가 없습니다.
라는 오류가 뜨더라구요.
이 오류가 뜨는 이유가 함수 내에서 선언한 정적 변수는 함수를 통해서만 접근할 수 있기 때문인가요?
그렇다면 위의 함수 내에서 정적 변수를 선언한 방식과
아래처럼 class 내에 정적 변수를 선언했을 때
정적 변수가 생성되는 위치와 생성 과정이 다른 건가요?
class UserManager
{
public:
static UserManager um;
...
}
UserManager UserManager::um;
답변 1
0
이 오류가 뜨는 이유가 함수 내에서 선언한 정적 변수는 함수를 통해서만 접근할 수 있기 때문인가요?
네!
그렇다면 위의 함수 내에서 정적 변수를 선언한 방식과
아래처럼 class 내에 정적 변수를 선언했을 때
정적 변수가 생성되는 위치와 생성 과정이 다른 건가요?
그렇습니다. 함수 내부에 있는 static 변수는
맨 처음 함수가 실행될 때 생성되고,
그렇지 않은 static은 프로그램 구동 시점에 만들어집니다.
정말로 생성 위치가 다르네요, 감사합니다!
혹시 다른 분께 도움이 될까하여 남깁니다.