kwan's note

C++ Static 본문

Computer Programming/c++ programming

C++ Static

kwan's note 2022. 3. 30. 14:07
반응형

본 강의는 udemy pocu c++ 수업을 보고 작성하였습니다.

 

Static

: 범위의 제한을 받는 전역변수 이다.

 

이때 범위는 파일/네임스페이스/클래스/함수 가 된다.

 

C스타일 static 변수 즉 파일내에서 사용하는 전역변수는

어떠한 파일에서 static 변수로 선언을 하면 다른 파일에서 extern 키워드를 사용하더라도 이 static 변수에 접근할 수 없다.

 

함수 속에서 사용하는 전역변수는 최초 선언할때를 제외하고는 초기화를 하지 않고 또 함수 외부에서는 접근하지 않는다.

void add(int num)
{
	static int result =0;
    result +=num;
    std::cout<<result<<endl;
    return;
}

int main()
{
	add(10);
    add(20);
    return 0;
}

위와 같은 코드의 결과는
10

30

이 된다.

당연하게도 다른 함수에서는 static으로 선언되었지만 result에 접근이 불가능하다.

 

다음으로 클래스 내에서 선언된 정적 멤버변수는

클래스당 하나의 copy만 존재한다.

즉, 개체(객체)마다 존재하지 않고 클래스에 하나 존재한다.

 

따라서 베스트프랙티스는 다음과 같다.

 

정적 멤버 함수는

scope가 제한된 전역함수이다.

따라서 해당클래스의 정적멤버에만 접근이 가능하고 개체(객체)가 없어도 정적 함수를 호출할 수 있게된다.

반응형