Program Languege/C/C++

순수 가상함수

Frozen0113 2013. 3. 19. 19:57

순수 가상함수

 

virual void Func() = 0; 과 같이 정의된 함수를 말하며 여기서 = 0은 0을 대입하는 의미가 아닌 컴파일러에게 몸체를 정의하지 않았다고 알리는 의미이며 순수 가상함수를 가진 클래스의 객체를 가질 수 없다.(해당 클래스의 인스터스화 불가)

 

Ex> virtual 반환형 함수이름() = 0;

 

순수 가상함수를 한 개 이상 가진 클래스를 추상 클래스라한다. 추상 클래스는 역시 위에서 말한대로 인스턴스화 될 수 없다. 추상 클래스를 상속받아 자식 클래스에서 순수 가상 함수를 재정의를 해야한다. 그렇지 않으면 자식 클래스 역시 추상 클래스가 되며 인스턴스화를 할 수 없다. 추상 클래스는 상속만을 위한 클래스로, 인터페이스를 정의하는 클래스로 사용된다.

 

순수 가상함수와 가상 함수의 다른 점은 형태도 다르지만 가상 함수의 경우 재정의는 선택사항이다. 그대로 사용하거나 정의하지 않아도 된다. 하지만 순수 가상함수에서는 재정의를 강제한다.(재정의를 하지 않으면 상속받은 자식 클래스도 추상 클래스가 되기때문)