상속을 위한 기본 조건인 IS-A 관계의 성립

상속의 기본 문법에서 보이듯이, 유도 클래스는 기초 클래스가 지니는 보든 것을 지니고, 거기에다가 유도 클래스만의 추가적인 특성이 더해진다.

이는 다음과 같이 재정의 할 수 있다.

그리고

HAS-A 관계도 상속의 조건은 되지만 복합 관계로 이를 대신하는 것이 일반적이다.

is-a 관계 말고도 소유의 관계일 경우 상속이 형성된다.

class Gun
{
private:
	int bullet;
public:
	Gun(int bnum) : bullet(bnum){}
	void Shot() ...
}

class Police : public Gun
{
	private;
		int handcuffs;
		...	
}

그런데 이러한 소유의 관계는 다른 방식으로도 얼마든지 표현이 가능하다.

class Police
{
	Private:
	Gun *pistol;
}

상속으로 묶인 두 개의 클래스는 강한 연관성을 띤다. 전기봉을 가지고 잇는경우 C++ 에서 지원하는 다중상속으로 대처가 가능하긴 하지만 매우 복잡해 진다.

결론