자식 클래스에서 오버라이딩(재정의)한 멤버 함수를 기본 클래스의 포인터로 호출하면 일반적으로 재정의 전의 멤버 함수가 호출됨...이게 안되게 하기 위해서 virtual 지정
순수 가상 함수
기본 클래스에서 내용을 정의하지 않는 가상 함수를 순수 가상 함수라고 한다. (자바의 interface인가여?). 반드시 상속을 하여 사용해야 하는 클래스의 경우, 기본 클래스에서 가상 함수의 내용을 정하지 않는 경우가 있는데, 그런 대는 순수 가상 함수를 이용하면 편리합니다.
class Food{
public:
virtual void SetPrice(int myprice) = 0; //제일 처음 virtual, 마지막에 = 0
}
순수 가상 함수를 포함하는 클래스의 객체는 생성할 수 없다(상속한 클래스로 쇼부봐야되는듯)
private 상속
public상속을 하면...기본 클래스의 public 멤버는 파생 클래스에서도 public이 되고
protected 멤버는 자식 클래스에서도 protected 멤버가 됨
하지만
class Fruit : private Food{
}
이렇게 private 상속을 하면, 상속된 멤버는 파생 클래스 이외에는 접근할 수 없다. 따라서 이러한 방법은 그다지 사용되지 않지만, 다른 클래스의 접근을 제한하고자 할 때는 private 상속을 이용하기도 합니다.
'컴퓨터 과학 & 영상처리 관련 > C / C++' 카테고리의 다른 글
객체(오브젝트)를 멤버로 가지는 클래스, 함수옆에 : i(10) 이런거(객체 또는 변수 초기화임) (0) | 2012.07.10 |
---|---|
c++ 정적 멤버 변수 - static, 정적 멤버 함수 (0) | 2012.07.10 |
상속(inheritance) (0) | 2012.07.10 |
friend (0) | 2012.07.10 |
복사생성자 (0) | 2012.07.10 |