[C++] virtual 키워드
Language/C++virtual 키워드를 사용하면 오버라이딩 되는 함수를 가상으로 선언할 수 있다.
함수의 앞에 virtual 키워드를 붙여주면 되고, 이를 가상 함수(virtual function)라 부른다.
이전 글인 [C++] 오버라이딩 (Overriding) 의 예제에서 AAA 클래스의 함수만 가상함수로 바꾸어 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> using namespace std; class AAA { public: virtual void func() { cout << "AAA" << endl; } }; class BBB : public AAA { public: void func() { cout << "BBB" << endl; } }; int main() { BBB b; b.func(); AAA* a = new BBB; a->func(); return 0; } |
AAA 클래스의 func 함수는 가상함수로 선언하였기 때문에 존재하지만 존재하지 않는 함수로 선언되어 있는 것이다. 따라서, AAA 타입의 포인터로 접근하더라도 호출되지 않고 오버라이딩된 BBB 클래스의 func 함수가 호출되는 것이다.
가상 함수의 특성은 상속된다. 따라서, Base 클래스에서 선언한 가상 함수를 Derived 클래스에서 오버라이딩 한다면 이 오버라이딩한 함수 또한 가상 함수의 특성을 가지게 된다.
'Language > C++' 카테고리의 다른 글
[C++] 순수 가상 함수와 추상 클래스 (0) | 2015.12.26 |
---|---|
[C++] static binding & dynamic binding (0) | 2015.12.26 |
[C++] 오버라이딩 (Overriding) (0) | 2015.12.24 |
[C++] 객체 포인터 (0) | 2015.12.22 |
[C++] 상속의 조건. is-a 와 has-a (0) | 2015.12.19 |