Virtual Inheritance

`virtual public Device`는 최종 객체 안의 Device를 하나로 공유하게 만든다

Printer와 Scanner가 Device를 가상 기반으로 상속하면 Copier 안에는 공유 Device가 하나만 남아 `c.id`가 모호하지 않습니다.

Device
공유 기반 클래스 인스턴스 1개
Printer : virtual public Device Scanner : virtual public Device
Printer
출력 기능을 더한다
Scanner
스캔 기능을 더한다
public Printer public Scanner
Copier
Printer와 Scanner 기능을 모두 갖지만 Device는 하나만 가진다
코드 위치 써야 하는 표현 의미
중간 클래스 class Printer : virtual public Device Device를 복사하지 말고 공유 기반으로 연결한다.
최종 클래스 class Copier : public Printer, public Scanner 두 기능을 합치되 Device는 한 번만 가진다.
객체 사용 c.id = 7 id 경로가 하나라 모호성 없이 접근한다.