도슐랭스타

C++ - 바인딩(binding) 본문

C++

C++ - 바인딩(binding)

도도.__. 2023. 12. 6. 11:04

바인딩(binding)

  • 명령어들이 결정되는 시점이다.
  • 정적(static)바인딩과 동적(dynamic)바인딩이 있다.

정적(static) 바인딩

  • 컴파일 시간에 발생하는 바인딩이다.
  • 정적으로 선언된 식별자는 컴파일러에 의해 메모리 위치나 코드 영역과 연결된다.

동적(dynamic) 바인딩

  • 실행 시간에 발생하는 바인딩이다.
  • 가상 함수나 가상 클래스를 사용할 경우, 함수 호출 시점에 실제로 호출할 함수가 결정된다.

아무것도 적지 않은 auto int x는 동적 바인딩으로 실행시에 초기값이 결정된다.
static은 정적 바인딩으로 컴파일시 초기값이 결정되며 해당 블록이 끝나도 프로그램이 종료될 때까지 값을 유지한다.


static은 모든 객체가 공유하는 멤버변수를 만들 때 사용한다.(하나만 만들어짐)
반드시! 초기값을 정의해주어야한다.


#include <iostream>

class Car {
private:
    static int count; // 정적 멤버 변수
public:
    Car() {
        count++; // 객체 생성 시 count 증가
    }
    static int getCount() {
        return count; // 정적 멤버 변수 반환
    }
};

int Car::count = 0; //정의

int main() {
    Car car1;
    Car car2;
    Car car3;

    std::cout << "Car 객체 수: " << Car::getCount() << std::endl;

    return 0;
}

객체는 따로 생성이되지만 멤버변수와 멤버함수는 모든 객체가 공유한다.

반응형

'C++' 카테고리의 다른 글

C++ - 콘솔파일입출력  (0) 2023.12.13
C++ - 템플릿(Template)  (1) 2023.12.06
C++ - 다중상속의 문제점(다이아몬드 문제)  (0) 2023.12.01
C++ - overriding, 가상함수(virtual function)  (0) 2023.11.29
C++ - 다중 상속  (0) 2023.11.29
Comments