2023. 9. 27. 12:47 C++/공부
C++] 기초(15) - 정적 변수/함수(Static Variable/Func)
[들어가기 전]
정적 변수란 변수 선언 앞에 static 키워드를 추가하여 선언하는 변수이며,
정적 함수란 함수 선언 앞에 static 키워드를 추가하여 선언하는 함수이다.
[설명]
static 키워드가 붙은 정적 변수/함수는 메모리 영역(코드/스택/힙/데이터)에서 데이터 영역에 생성되며, SW LifeCycle과 동일하게 운용되어, SW 종료 시 해당 메모리를 반환한다. 정적 변수/함수는 단 한 번만 초기화 되며, 하나의 주소값을 가지는 데이터 이다. 따라서 클래스 내부에 정적 변수를 멤버로 선언 시, 여러 클래스를 생성하더라도 정적 멤버 변수는 하나의 주소로 존재하며, 이러한 특징으로 공유 변수 라고 불리기도 한다.
[정적 변수/함수의 특징]
1) 메모리 영역 중 데이터 영역에 할당된다.
2) SW LifeCycle과 동일하게 운용된다.
3) SW 실행 시 단 한 번만 초기화 되며, 하나의 주소 값으로 존재한다.
4) 클래스 내부에 멤버 변수/함수로 선언 시, 클래스 생성과 무관하게 사전 생성된다.
- 클래스를 여러개 생성 하더라도, 하나의 주소 값으로 존재함
- 클래스를 여러개 생성한 경우에 공유 변수로 사용 가능
- 클래스 멤버 함수에서 this 키워드는 사용 불가
(멤버 함수 생성 시점이 객체가 만들어지기 전이기 때문)
5) 클래스 명으로 접근해서 사용하길 권고
- ex) Shape::GetWidth();
6) Singleton 디자인 패턴의 주요 키워드이다.
추가 작성 예정...
[싱글톤 패턴 객체 생성]
#pragma once
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton* getInstance();
private:
Singleton() {};
static Singleton* Instance;
};
// 정적 멤버 변수이므로 Class 외부에서 반드시 초기화!!
Singleton *Singleton::Instance = nullptr;
// 정적 멤버 함수이므로 Class 외부에서 반드시 정의!!
Singleton* Singleton::getInstance()
{
if (Instance == nullptr)
{
Instance = new Singleton();
}
return Instance;
}
'C++ > 공부' 카테고리의 다른 글
C++] 기초(17) - 상속(Inheritance) (0) | 2024.03.17 |
---|---|
C++] 기초(16) - 싱글톤(Singleton) 디자인 패턴 (0) | 2024.03.17 |
C++] 기초(14) - 복사생성자(Copy Constructor) (0) | 2023.09.10 |
C++] 기초(13) - 소멸자(Destructor) (0) | 2017.11.25 |
C++] 기초(12) - 생성자(Costructor) (0) | 2017.11.25 |