Skip to main content

가상 상속이란 무엇입니까?

가상 상속은 슈퍼 클래스의 구현이 불완전하고 객체의 완전한 정의를 위해서는 서브 클래스가 필요한 유형의 상속입니다.이 유형의 상속은 단일 및 다중 상속과 함께 사용될 수 있지만 다중 상속에서 가장 일반적으로 사용됩니다.가상 기본 클래스에서 상속되는 클래스는 해당 기본 클래스의 직접 서브 클래스가됩니다.가상 기본 클래스는 모든 방법을 구현하기 위해 서브 클래스에 의존 할 수 있지만 이는 요구 사항이 아닙니다.

C ++는 가상 상속을 사용하는 가장 일반적으로 알려진 컴퓨터 언어입니다.C ++의 가상 상속을 선언하려면 가상 키워드가 사용됩니다.슈퍼 클래스와 서브 클래스는 가상 키워드로 가상 메소드를 선언해야합니다.이를 통해 C ++ 컴파일러는 슈퍼 클래스가 불완전하다는 것을 알려주고 서브 클래스에서 정보를 가져와 완료해야합니다.서브 클래스를 사용하여 슈퍼 클래스를 완료하면 서브 클래스가 동일한 기본 클래스가있는 경우 서브 클래스가 서로를 덮어 쓰고 대신 C ++ 컴파일러가 각 객체에 어떤 조각이 발생하는지 결정하는 것을 관리한다는 것을 의미하지는 않습니다.상속, C ++의 글로벌 기능은 가상으로 선언 될 수 없습니다.이 상속 유형은 객체 지향 프로그래밍 (OOP) 원리를 준수 할 때만 사용할 수 있습니다.그 이유는 글로벌 기능이 특정 클래스와 관련이 없으므로 일반적으로 스스로 자체적으로 포함되기 때문입니다.슈퍼 클래스 및 서브 클래스 상속이 없으면 발생할 수 없으므로 글로벌 기능과 가상 상속은 상호 배타적입니다.이론적으로 전 세계 기능은 가상 기능 내부에서 사용될 수 있지만 그 반대는 항상 작동하지 않을 수 있습니다.다중 상속에서, 하나는 2 개의 서브 클래스 B와 C를 갖는 기본 클래스 A를 가질 수 있으며, 클래스 B와 C 모두에서 상속되는 클래스 D는 일반적으로 클래스 A, B, Class a, B, Classe의 다이아몬드라고합니다.그리고 C는 모두 동일한 방법의 구현을 가지고 있으며, 클래스 D가 어떤 구현을 사용해야하는지 결정할 수는 없습니다.가상 상속은 각 클래스 구현이 뚜렷하고 명확하지 않기 때문에이 문제를 해결합니다.이 차이는 각 객체 유형을 추적하는 가상 테이블 (VTABLE)이라는 특수한 내부 객체에 의해 처리되지만,이 테이블은 언어에 내장되어 있기 때문에 프로그래머가 명시 적으로 조작 할 필요는 없습니다.