1. 정적 변수
1.1 멤버 함수 내부에서의 정적 변수
멤버 함수 내부에서 정적 변수를 사용할 수 있다.
class Example {
public:
void MemberFunction() {
static int staticVar = 0;
// 멤버 함수 내에서의 정적 변수 사용
}
};
1.2 멤버가 아닌 함수 내부에서의 정적 변수
멤버가 아닌 함수 내에서도 정적 변수를 활용할 수 있다.
void NonMemberFunction() {
static int staticVar = 0;
// 멤버가 아닌 함수 내에서의 정적 변수 사용
}
2. 정적 멤버 함수
class Example {
public:
static void StaticMemberFunction() {
// 정적 멤버 함수
}
};
3. 범위(scope)의 제한을 받는 전역 변수
전역 변수를 정의할 때 범위에 주의해야 합니다. 다양한 범위에서의 변수의 사용을 고려해야 한다.
- 파일 속
- 네임스페이스 속
- 클래스 속
- 함수 속
4. extern 키워드
extern 키워드를 사용하여 다른 파일의 전역 변수에 접근이 가능하게 할 수 있다.
5. 함수 속 정적 변수
함수 속에서 정적 변수를 사용하여 범위를 제한할 수 있다.
void Accumulate(int number) {
static int result = 0;
result += number;
std::cout << "result = " << result << std::endl;
}
int main() {
Accumulate(10); // 10
Accumulate(20); // 30
return 0;
}
6. 정적 멤버 변수
class Cat {
public:
Cat();
private:
static int count;
};
// Cat.cpp
int Cat::count = 0;
Cat::Cat() {
count++;
}
- 각 클래스당 하나의 COPY만 존재한다.
- 개체의 메모리 레이아웃의 일부가 아니다.
- 클래스 메모리 레이아웃에 포함된다.
- exe 파일 안에 필요한 메모리가 이미 할당된다.
- 컴파일러는 이 변수의 인스턴스가 몇 개 존재하는지 이미 알고 있다.
- 정적 멤버 변수를 사용할 때 범위를 제한하여 사용하는 것이 좋다.
- 함수 안에서 정적 변수를 넣지 않을 것.
- 전역 변수 대신 정적 멤버변수를 쓸 것.
- C스타일의 정적 변수를 써야할 이유가 없다.
7. 정적 멤버 함수
// Math.h
class Math {
public:
static int Square(int number);
};
// Math.cpp
int Math::Square(int number) {
return number * number;
}
- 논리적인 범위에 제한된 전역 함수
- 해당 클래스의 정적 멤버에만 접근 가능
- 개체 없이도 정적 함수 호출 가능
'Language > C++' 카테고리의 다른 글
[C++] 32.Unmanaged Programming: 적절한 예외 처리 (0) | 2024.01.31 |
---|---|
[C++] 31.Unmanaged Programming: Exception (1) | 2024.01.31 |
[C++] 29.Unmanaged Programming: 인라인 함수 (0) | 2024.01.31 |
[C++] 28.Unmanaged Programming: dynamic_cast (1) | 2024.01.30 |
[C++] 27.Unmanaged Programming: const_cast (1) | 2024.01.30 |