본문 바로가기

C++ 기초 2

C++ 가상 함수(Virtual function)

가상 함수

   가상 함수는 상속받은 기본 클래스의 함수를 파생 클래스에서 다시 정의할 때 사용한다. 기본 클래스에 정의된 함수를 사용하지 않고, 같은 이름의 함수를 다시 정의하는 것이다. 이러한 가상 함수를 사용하는 이유는 객체의 다형성을 지원하기 위해서이다. 가상 함수를 정의하려면 앞에 virtual이라고 표기해야 한다. 자세한 내용은 아래 예제에서 참고할 수 있다. 

 

 
예제
#include <iostream>
using namespace std;

class POINT {
private:
	int sx, sy;
public:
	POINT(int a, int b) {
		sx = a;
		sy = b;
	}
	virtual void PutData()	// 가상함수
	{
		cout << sx << endl;
	}
};

class LINE : public POINT {
private:
	int ex, ey;
public:
	LINE(int a, int b, int c, int d) :POINT(a, b) {
		ex = c;
		ey = d;
	}
	void PutData()
	{
		cout << ex << endl;
	}
};

int main() {
	POINT* p;
	POINT ob1(10, 20);
	p = &ob1;
	p->PutData();	// POINT에 있는 PutData 호출
	LINE ob2(50, 60, 70, 80);
	p = &ob2;
	p->PutData();	// LINE에 있는 PutData 호출
}
실행 결과
10
70
참고

1. 홍원기, Visual C++를 활용한 Windows Programming, 북스홀릭퍼블리싱, 2019.02.2

'C++ 기초 2' 카테고리의 다른 글

C++ 클래스 다중 상속  (0) 2024.02.05
C++ 클래스 상속 II  (1) 2024.02.01
C++ 클래스 상속 I  (0) 2024.01.31
C++ friend 함수  (0) 2024.01.30
C++ this 포인터  (0) 2024.01.29