반응형
- 정의
바인딩 : 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것
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();
*/
}
반응형
'C & C++ > C++' 카테고리의 다른 글
[C++] virtual 가상함수 (소멸자) (0) | 2019.11.06 |
---|---|
[C++] virtual 가상함수 (생성자) (0) | 2019.11.06 |
[C++] 생성자&소멸자의 오버로딩/오버라이딩 (0) | 2019.11.05 |
[C++] 구조체/클래스 차이 (0) | 2019.11.05 |
[C++] 구조체 사용 방법 및 C와 C++의 구조체 차이 (0) | 2019.11.05 |