상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 static 키워드의 의미는?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 `static` 키워드는 여러 가지 맥락에서 사용되며, 그 의미는 사용되는 위치에 따라 달라집니다. `static` 키워드는 주로 변수와 함수의 저장 기간, 가시성, 그리고 클래스의 멤버에 대한 특성을 정의하는 데 사용됩니다. 아래에서 각 경우에 대해 자세히 설명하겠습니다. 1. 함수 내의 static 변수 함수 내에서 `static` 키워드를 사용하여 선언된 변수는 해당 함수가 호출될 때마다 초기화되지 않고, 프로그램의 실행 동안 유지됩니다. 즉, 함수가 여러 번 호출되더라도 이 변수는 한 번만 초기화되고, 그 이후에는 이전의 값을 유지합니다. ```cpp include <iostream> void counter() { static int count = 0; // static 변수 count++; std::cout << "Count: " << count << std::endl; } int main() { counter(); // Count: 1 counter(); // Count: 2 counter(); // Count: 3 return 0; } ``` 위의 예제에서 `count` 변수는 `counter` 함수가 호출될 때마다 증가하지만, 함수가 종료된 후에도 그 값을 유지합니다. 2. 전역 변수 및 함수의 static 전역 변수나 함수에 `static` 키워드를 사용하면 해당 변수나 함수의 가시성을 제한할 수 있습니다. 즉, 이 변수나 함수는 정의된 파일 내에서만 접근할 수 있으며, 다른 파일에서는 사용할 수 없습니다. 이를 통해 이름 충돌을 방지하고, 모듈화를 촉진할 수 있습니다. ```cpp // file1.cpp static int globalVar = 10; // file1.cpp 내에서만 접근 가능 static void helperFunction() { std::cout << "This is a helper function." << std::endl; } // file2.cpp extern int globalVar; // 오류 발생: globalVar는 file1.cpp에서만 접근 가능 ``` 3. 클래스의 static 멤버 클래스 내에서 `static` 키워드를 사용하여 선언된 멤버 변수나 멤버 함수는 클래스의 모든 인스턴스가 공유하는 특성을 가집니다. 즉, 클래스의 모든 객체가 동일한 메모리 공간을 참조합니다. `static` 멤버는 객체가 생성되지 않아도 접근할 수 있으며, 클래스 이름을 통해 직접 호출할 수 있습니다. ```cpp include <iostream> class <a href='https://sangseek.com/sangseeks/MyClass/ko'>MyClass</a> { public: static int staticVar; // static 멤버 변수 static void staticFunction() { // static 멤버 함수 std::cout << "Static function called." << std::endl; } }; // static 멤버 변수 초기화 int MyClass::staticVar = 0; int main() { MyClass obj1, obj2; obj1.staticVar = 5; // obj1을 통해 staticVar에 접근 std::cout << "obj2.staticVar: " << obj2.staticVar << std::endl; // 5 출력 MyClass::staticFunction(); // 클래스 이름을 통해 static 함수 호출 return 0; } ``` 4. static과 메모리 관리 `static` 키워드로 선언된 변수는 프로그램의 데이터 세그먼트에 저장되며, 프로그램이 종료될 때까지 메모리에 존재합니다. 이는 동적 <a href='https://sangseek.com/sangseeks/메모리 할당/ko'>메모리 할당</a>(`new` 키워드 사용)과는 다르며, 동적 메모리 할당된 변수는 명시적으로 해제해야 합니다. 결론 C++에서 `static` 키워드는 변수와 함수의 생명 주기 및 가시성을 제어하는 데 중요한 역할을 합니다. 함수 내에서의 `static` 변수는 상태를 유지할 수 있게 해주고, 전역 변수 및 함수의 `static` 선언은 모듈화를 촉진하며, 클래스의 `static` 멤버는 모든 인스턴스가 공유하는 특성을 제공합니다. 이러한 특성들은 C++ 프로그래밍에서 코드의 구조와 유지 보수성을 향상<a href='https://sangseek.com/sangseeks/시키/ko'>시키</a>는 데 기여합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기