갓똥
나는야 프로그래머
갓똥
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 프로그래밍 (146)
      • 자바 (9)
      • 안드로이드 (2)
      • 유니티 (20)
      • C++ (38)
      • C# (56)
      • HTML (2)
      • 파이썬 (3)
      • 자료구조 (2)
      • 알고리즘 (0)
      • 문제풀이 (4)
      • 디자인 패턴 (7)
      • 카카오톡 봇 (1)
      • 엑셀 (1)
      • 기타 (1)
    • 게임 (21)
      • 테일즈위버 (0)
      • 카이로소프트 (1)
      • 순위 (19)
      • 기타 (1)
    • 일상 (13)
      • 카페 (1)
      • 방탈출 (12)
    • 기타 (6)
      • 웃긴자료 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • c# coroutine
  • 2020년 게임 매출
  • 게임 매출 순위
  • c# 코루틴
  • 전세계게임매출순위
  • C++
  • C# 예외 처리
  • c# unboxing
  • 유니티 그래프 그리기
  • 롤 골드그래프
  • 강남 방탈출
  • C++ virtual
  • 전세계 게임 매출
  • 게임매출순위
  • 모바일 게임 순위
  • c# Thread
  • 게임 디자인 패턴
  • 유니티 그래프
  • pc게임 순위
  • 글로벌게임매출
  • C++ 상속
  • c# delegate
  • C# boxing
  • 알고리즘
  • c# collection
  • Unity Graph
  • C++ 소멸자
  • 유니티 골드그래프
  • pc 게임 순위
  • 자바

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갓똥

나는야 프로그래머

[C++] static member function
프로그래밍/C++

[C++] static member function

2019. 11. 17. 20:41
728x90
반응형

1. 정적 멤버 함수 (static member function)

class Car {
    int speed;
    static int cnt;
public:
    Car()  { ++cnt; }
    ~Car() { --cnt; }
    
    int getCount() { return cnt; }
};
int Car::cnt = 0;

int main() {
    Car c1, c2, c3;
    
    c1.getCount();
}

 

static member data는 객체를 생성하지 않아도 메모리에 올라간다.
위의 코드에서는 getCount() 함수를 통해 객체의 개수를 파악하고 있다.
그런데, 객체를 생성하지 않은 상태에서 개수를 파악하고 싶을 때 getCount()를 어떻게 호출할까?
static int getCount() { return cnt; }

Car::getCount();

  ① 정적 멤버 함수 (static member function)

    => 객체 없이 호출 가능한 멤버 함수

    => 클래스 이름::함수이름() 으로 호출


  ② 정적 멤버 함수를 호출하는 2가지 방법

    => 클래스 이름으로 호출

        -> Car::getCount();

    => 객체 이름으로 호출

        -> c1.getCount();

 

  ③ 객체 이름보다는 클래스 이름을 사용하는 것이 좋다.

 

  ④ Java, C# 등의 언어는 클래스 이름으로만 접근 가능하다.

 


2. 정적 멤버 함수의 특징

class Test {
    int        data1;
    static int data2;
public:
    static void t1() {
        data1 = 0; // error
        data2 = 0; // ok
        t2();      // error
    }
    void t2() {
        data1 = 0; // ok
        data2 = 0; // ok
        t1();      // ok
    }
};
int Test::data2 = 0;

int main() {
    Test::t1();
    
    Test t;
    t.t2();
}

  ① 정적 멤버 함수 (static member function) 의 특징

    => 객체 없이 호출 가능한 멤버 함수

    => 일반 멤버(데이터, 함수)에 접근할 수 없다.

    => 정적 멤버(데이터, 함수)에 접근할 수 있다.

 

  ② 일반 멤버 함수 vs 정적 멤버 함수

728x90
반응형

'프로그래밍 > C++' 카테고리의 다른 글

[C++] this 포인터  (0) 2019.11.24
[C++] const member function  (0) 2019.11.17
[C++] static member data  (0) 2019.11.14
[C++] 객체의 복사 방법  (0) 2019.11.13
[C++] 복사 생성자 (copy constructor)  (0) 2019.11.07
    '프로그래밍/C++' 카테고리의 다른 글
    • [C++] this 포인터
    • [C++] const member function
    • [C++] static member data
    • [C++] 객체의 복사 방법
    갓똥
    갓똥
    공부하며 알아가는 내용을 정리해 봅니다.

    티스토리툴바