C++ common sense 10

  1. 클래스 멤버가 저장되는 영역

클래스는 정적(static)/비정적(non-static) 멤버 변수와 멤버 함수를 가질 수 있다.

  • 메모리 구조 (출처: TCP school) image
  • 멤버 변수
    • 비정적(non-static) 멤버 변수는 stack에 할당 된다. 그리고 구조체나 클래스의 크기에 영향을 준다. 또한 런타임 시간에 크기가 결정된다.
    • 정적(static) 멤버 변수는 데이터 영역에 저장되며, 구조체나 클래스의 크기에 영향을 주지 않는다. 프로그램 시작 시 크기가 결정된다.
  • 멤버 함수
    • 정적(static)/비정적(non-static) 함수는 모두 code영역에 저장되어 모든 클래스가 공유한다.
    • 차이점은 정적(static)함수는 객체의 생성과 관계 없이 호출될 수 있다는 점이다.