C & C++/C++
[C++] 바인딩 (정적 바인딩 & 동적 바인딩)
키플레이어
2019. 11. 5. 11:10
반응형

- 정의
바인딩 : 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것
1) 정적 바인딩 : 컴파일시간에 바인딩 결정(실제 데이터 클래스가 필요 없는 경우 대부분 사용:실행속도 빠름)
2) 동적 바인딩 : 실행시간에 따라 바인딩 결정.
virtual화 하여 오버라이딩을 하면 참조된 인스턴스의 실제 데이터 클래스형에 따라 재정의된 함수가 호출.
- 공통된 인터페이스를 제공
- 상위가 하위에 접근 가능
- 추상 클래스사용시 용이
- 정적 바인딩 & 동적 바인딩
동적 바인딩을 정적 바인딩처럼 쓰기 위해서 virtual화 시킵니다. virtual화 된후에는 메모리 구조가 변경됩니다.
#include<iostream.h>
class Halbe{
public:
virtual void disp(){
cout<<"Halbe"<<endl;
}
};
class Abe:public Abe{
public:
virtual void disp(){
cout<<"Abe"<<endl;
}
};
class Me:public Abe{
public:
virtual void disp(){
cout<<"Me"<<endl;
}
};
void main(){
Me me;
Abe abe;
Halbe halbe;
// 정적 바인딩
halbe.disp();
abe.disp();
me.disp();
// 동적 바인딩
p=&halbe;
p->disp();
p=&abe;
p->disp();
p=&me;
p->disp();
/*
switch(num){
case 1: p=&halbe; break;
case 2: p=&abe; break;
case 3: p=&me; break;
}
p->disp();
*/
}
반응형