클래스의 멤버에 Virtual 이 붙으면 그 멤버는 가상의 멤버가 되며

해당 클래스형으로 호출하게 되면 해당 클래스를 상속받은 클래스의 Overriding된 멤버가 호출된다.

 

Virtual 멤버가 있는 클래스를 상속하면 Virtual 멤버 특성도 상속된다.

 

따라서 Virtual은 상속한 클래스가 Oerriding 멤버를 가졌을때메만 그 효력을 얻을수 있다.

그렇치 않은 경우는 일반 멤버와 다를게 없다.

 

가짜 가상 함수, 순수 가상 함수

Virtual 선언된 멤버(함수)의 몸체 부분 코드가 있는 경우를 가짜 가상 함수라 하며

몸체 부분이 없는 경우를 순수 가상 함수라 한다 이때는 다음과 같이 표시한다

Virtual 형 멤버명=0;

 

Static Binding, Dynamic Binding

해당 클래스 형으로 선언된 개체 변수에서는 해당 형의 멤버만 호출할수 있는 경우 Static Binding

해당 클래스 형 으로 선언되었으나 가리키는 개체의 형에 따라 호출되는 멤버가 결정되는 경우를 Dynamaic Binding

 

이 처럼 순수 가상 함수를 포함하는 멤버는 개체화 될수 없다. 이를 추상 클래스라고 한다.

그러나 이런 클래스도 객체 포인터는 생성 가능하다.

 

상속하는 클래스가 실질적인 내용을 보니 같은 클래스를 상속하는 부분이 있다고 할때

그런 클래스를 상속하는 클래스를 Virtual 상속하게되면(클래스명: Virtual 접근자 클래스명)

결과적인 클래스에서는 Virtul 클래스는 하나만 상속받계된다.

 

다중 상속 표시는 상속 클래스를 ,로 구분해서 표시한다.

돼도록이면 다중 상속은 사용하지 않는 것이 좋다.

'C,C++' 카테고리의 다른 글

템플릿  (0) 2012.11.22
연산자 오버로딩  (0) 2012.10.28
protected  (0) 2012.10.25
상속  (0) 2012.10.24
mutable  (0) 2012.10.11

+ Recent posts