C++ 클래스 - 정적 멤버

진경천·2023년 9월 20일
0

C++

목록 보기
42/90

정적 멤버 변수

  1. 클래스에는 속하지만 객체 별로 할당되지 않고 클래스의 모든 객체가 공유하는 멤버를 의미한다.
  2. 멤버 변수가 정적으로 선언되면 멤버 변수가 정적 공간에 저장 되고 해당 클래스의 모든 객체에 대해 하나의 데이터만이 유지가 된다.
  3. 프로그램 실행중에 메모리 할당이 한번 되며 프로그램 종료 될때 메모리 해제된다.
  • 헤더 파일
class staticPerson{
private:
	static int num;
public:
	staticPerson();
	static void print();
	// 정적 멤버 함수는 정적 멤버 변수가 아닌 일반 변수는 접근이 안된다.
	// 정적 멤버 함수는 암시적인 this가 없음 그러므로 const 사용 불가
};
  • 소스 파일
#include "staticPerson.h"

#include <iostream>

int staticPerson::num = 0;	// 초기화를 꼭 해줘야함.

staticPerson::staticPerson() {
	num++;
}

void staticPerson::print() {
	std::cout << num << std:: endl;
}

정적 멤버 함수

클래스의 멤버 함수도 정적으로 선언이 가능하며 해당 클래스의 객체를 생성하지 않고 클래스 이름만으로 함수 호출이 가능하다.

1. 객체이름.멤버함수이름(); // 일반 멤버 함수의 호출
2. 클래스이름.멤버함수이름(); // 정적 멤버 함수의 호출

  • 메인 함수
#include <iostream>

#include "staticPerson.h"

using namespace std;

int main() {
	staticPerson p0;
	staticPerson p1;

	p0.print();
	p1.print();

	staticPerson::print();	// print 함수를 정적 멤버로 선언하여 가능해짐
}
  • 실행 결과

    2
    2
    2

profile
어중이떠중이

0개의 댓글