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' 카테고리의 다른 글

Object slicing  (0) 2019.05.29
Name mangling  (0) 2019.05.29
Storage class  (0) 2019.05.29
Scope  (0) 2019.05.29
Binding  (0) 2019.05.29
Comments