#14 [c++] Virtual 상속, 가상함수/ 오버라이딩

정상준·2022년 11월 7일
0

c++

목록 보기
10/25

📝 다중 상속의 문제

📝 가상 함수와 오버라이딩

  • 가상 함수
    • Virtual로 선언
      • 함수에 대한 호출 바인딩을 실행 시간에 결정(동적 바인딩)
  • 오버라이딩
    • 파생 클래스에서 기본 클래스의 함수와 동일한 이름의 함수 선언
      • 기본 클래스의 동작을 재정의
      • 다형성을 위한 기능
      • 가상함수에 대한 오버라이딩을 할 경우 동적 바인딩 가능
#include <iostream>
#include <string>

using namespace std;

/* 
Derived::f() called
Derived::f() called
*/

class Base {
public:
	virtual void f() { cout << "Base::f() called" << endl; }
};

class Derived : public Base {
public:
	virtual void f() { cout << "Derived::f() called" << endl; }
};

int main() {
	Derived d, * pDer;
	pDer = &d;
	pDer->f(); //Derived::f()호출

	Base* pBase;
	pBase = pDer; //업 캐스팅
	pBase->f(); //동적바인딩 발생, Derived::f()호출
}
profile
안드로이드개발자

0개의 댓글