본문 바로가기
프로그래밍 언어/C++

[C++] 함수 바인딩 (Funciton Binding)

by 까망 하르방 2025. 2. 22.
반응형

함수 바인딩 (Funciton Binding)

표현식을 어느 함수와 연결할지 결정하는 과정

 

[예제] function binding

#include <iostream>

class Animal
{
public:
    // static binding
    void Cry1() { std::cout << "static binding Animal..." << std::endl; } // 1

    // dynamic binding
    virtual void Cry2() { std::cout << "dynamic binding Animal..." << std::endl; } // 2
};

class Dog : public Animal
{
public:
    void Cry1() { std::cout << "static 멍멍" << std::endl; } // 3
    virtual void Cry2() { std::cout << "dynamic 멍멍" << std::endl; } // 4
};

int main()
{
    Dog d;
    Animal* p = &d;

    p->Cry1(); // ??? -> 1
    p->Cry2(); // ??? -> 4
}

 

 

✔️ static binding (early binding)

• 컴파일러가 컴파일 시간에 함수 호출 결정
• 컴파일러가 실제 어느 객체를 가리키는지 컴파일 시간에 알 수 없는 경우
 타입을 가지고 함수 호출 결정
→ 빠르지만 논리적이지 않다.
→ C++ non-virtual funciton

 

 

✔️ dynamic binding (late binding)

• 컴파일 시간에 가리키는 곳을 조사하는 기계어 코드 생성
• 실행 시간에 가리키는 곳을 조사 후 실제 메모리에 있는 객체 따라 함수 호출
→ 느리지만 논리적
→ C++ virtual funciton + Java, Python  등

반응형

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

[C++] 가상 소멸자  (3) 2025.02.24
[C++] mutable 키워드  (1) 2025.02.21
[C++] 상수 멤버함수 const member function  (5) 2025.02.19
[C++] return by reference  (4) 2025.02.15
[C++] class this 키워드  (8) 2025.02.08

댓글