0
:다중 상속 - 일반적인 다이아몬드 시나리오에서 가상 수정
내가 하단의 상속 수정 D1과 D2 모두 가상 될를 수정 한 경우 변경 될지class MBase {
public:
MBase(int) {}
virtual char const* vf() const = 0;
virtual ~MBase() {}
};
class D1 : public MBase { //NOT VIRTUAL!!!
public:
D1() : MBase(1) {}
char const* vf() const { return "D1"; }
};
class D2 : virtual public MBase {
public:
D2() : MBase(2) {}
char const* vf() const { return "D2"; }
};
class Bottom : public D1, public D2 {
public:
char const* vf() const { return "Bottom"; }
}
? 즉, 영향을 미칩니다.
class Bottom : public virtual D1, public virtual D2 {
public:
char const* vf() const { return "Bottom"; }
}
좋아요, 그렇다면 제가 D1과 D2에서 사실 상속받은 커플 Bottoms를 가졌을 것입니다. 그런 다음 리프에 D1과 D2가 모두 하나만 포함될 것입니다 ... 완벽한 답변을 해주셔서 대단히 감사합니다! – Bober02