티스토리 뷰
동적 바인딩 : 부모가 자식을 접근하는 방식
- 포인터를 사용
- 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();
}
'LANGUAGE > C++' 카테고리의 다른 글
[C++] STACK / QUEUE (0) | 2018.03.14 |
---|---|
[C++] VIRTUAL FUNCTION - 가상 함수 (0) | 2018.03.13 |
[C++] ABSTRACT CLASS - 추상 클래스 (0) | 2018.03.13 |
[C++] MULTIPLE INHERITANCE - 다중 상속 (0) | 2018.03.13 |
[C++] 급여관리 프로그램 (0) | 2018.03.12 |
댓글