프로그래밍/C | C++

클래스 가상함수, 순수가상함수

얼땅불땅 2013. 8. 14. 09:50
쉽게 설명해서.

가상함수 : 자식놈이 생성안해도 되는 함수.
virtual 부모::printf()
{
 printf("hi\n");
}

virtual 자식::printf()
{
 printf("hi 자식\n");
}

가상테이블에 printf에 대해서 등록하고
자식이 이걸 오버라이딩 하면 자식으로 등록됨.

1. 부모클래스 *a = new(자식클래스);
a->printf(); // 자식놈이 printf()

2. 부모클래스 *a = new(부모클래스);
a->printf(); // 부모 printf();

3. 자식클래스 *a = new(자식클래스);
a->printf(); // 자식 printf();

순수가상함수 : 자식놈이 반듯이 생성해야 하는 함수.
virtual printf()=0;

가상테이블에 함수를 만들고 자식이 생성해야지만 사용되는 함수.
자식이 호출 안하려면 생성 안해도 됨.