[C++] 오버라이딩 (Overriding)
Language/C++상속 관계에서 Base 클래스에서 선언한 멤버는 Derived 클래스에서 물려받는다고 하였다.
이때 Derived 클래스에서 Base 클래스에서 선언된 멤버를 다시 선언하여 재정의 하는것을 오버라이딩(Overriding)이라고 한다.
다음은 오버라이딩 예제이다.
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: 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 함수를 다시 정의해 오버라이딩 하였다.
BBB 클래스 객체인 b에서 func 함수를 호출하자 오버라이딩 이전에 정의된 AAA 클래스의 func 함수는 가려지고 BBB 클래스의 func 함수가 호출되는 것을 볼 수 있다.
하지만, 객체포인터를 이용하여 AAA 클래스를 가리킨다면 AAA 클래스에 정의된 func 함수가 호출되는 것을 볼 수 있다.
'Language > C++' 카테고리의 다른 글
[C++] static binding & dynamic binding (0) | 2015.12.26 |
---|---|
[C++] virtual 키워드 (0) | 2015.12.24 |
[C++] 객체 포인터 (0) | 2015.12.22 |
[C++] 상속의 조건. is-a 와 has-a (0) | 2015.12.19 |
[C++] 상속 (Inheritance) (0) | 2015.12.03 |