LANGUAGE/C++
[C++] DYNAMIC BINDING - 동적 바인딩
진심스테이크
2018. 3. 13. 13:29
동적 바인딩 : 부모가 자식을 접근하는 방식
- 포인터를 사용
- is ~a 관계일때만 사용 가능 //has ~a로 상속받으면 오류
- 동적 바인딩과 정적 바인딩의 방식은 다르지만, 결과는 같아야 한다
- 부모가 인식할 수 있는 범위까지만 사용가능하다
->즉. 부모만 가지고 있는 경우, 또는 오버라이딩한 멤버만 접근 가능
정적 바인딩 : 내꺼를 가지고 접근
장점
1. 자식이 여러명일 때
2. 코드를 간략하게 짤 수 있다
#include "stdafx.h"
#include <iostream>
using namespace std;
class A {
public :
virtual void disp(); //함수 선언
void ccc() {
cout << "ccc" << endl;
}
};
class B : public A {
public :
void disp(); //오버라이딩 -> virtual 안써도 자동으로 선언됨
void ddd(){
cout << "ddd" << endl;
}
};
void A::disp() { //함수 정의
cout << "A::disp()" << endl;
}
void B::disp() { //함수 정의
cout << "B::disp()" << endl;
}
void output() { //외부 함수
cout << "output()" << endl;
}
void main() {
A *p;
B bb;
p = &bb; //부모가 자식을 접근
//p가 A와 B를 둘다 가리킬 수 있다고 지정
bb.disp(); //정적 바인딩
p->disp(); //B -> A의 실체가 없어서 B에 접근
bb.ddd();
//p->ddd(); //error
p->ccc();
}