ecsimsw
dynamic binding / virtual function 본문
dynamic binding / virtual function
JinHwan Kim 2019. 5. 29. 17:29- 컴파일 시 바인딩된 (정적 바인딩된) base reference 변수로 오버라이딩한 함수를 호출할 시 당연히 base 클래스의 함수를 호출하게 된다.
- 동적 바인딩을 통하여 함수와 함수 정의를 실행 시에 바인딩하도록 할 수 있고, 특정 함수에 대해 동적 바인딩을 사용하고자 할 때 virtual 키워드를 사용할 수 있다.
c++ overriding
class A {
public:
void foo(){
cout << "AAAAAA" << endl;
}
};
class B:public A {
public:
void foo() {
cout << "BBBBBB" << endl;
}
};
void main() {
B b;
b.foo(); // "BBBBBB"
}
c++ base class reference's call
class A {
public:
void foo(){
cout << "AAAAAA" << endl;
}
};
class B:public A {
public:
void foo() {
cout << "BBBBBB" << endl;
}
};
void main() {
B b;
A& refA = b;
refA.foo(); //"AAAAAA"
}
c++ virtual
class A {
public:
virtual void foo(){
cout << "AAAAAA" << endl;
}
};
class B:public A {
public:
void foo() {
cout << "BBBBBB" << endl;
}
};
void main() {
B b;
A& refA = b;
refA.foo(); // "BBBBBB"
}
'Computer Science > Software engineering' 카테고리의 다른 글
Google 의 검색 알고리즘, page rank (0) | 2019.11.29 |
---|---|
Object slicing (0) | 2019.05.29 |
Name mangling (0) | 2019.05.29 |
Storage class (0) | 2019.05.29 |
Scope (0) | 2019.05.29 |