2016-10-25 13 views
1

UVM을 배우려고하는데, 아래 다이어그램이 상속을 나타내는 지 알고 싶습니다. 예를 들어 uvm_object가 uvm_void에서 상속 받습니까? UVM 1.1 Class 참조를 읽었습니다. 17 페이지에서 언급합니다.UVM에서 상속받은 클래스

uvm_void 클래스는 모든 UVM 클래스의 기본 클래스입니다. 데이터 멤버 나 함수가없는 추상 클래스입니다. C 프로그래밍 언어의 void 포인터 과 유사하게 객체의 일반 컨테이너를 만들 수 있습니다 ( ). uvm_void에서 직접 파생 된 사용자 클래스는 UVM 기능을 상속받지 않지만 이러한 클래스는 다른 UVM 객체와 함께 uvm_void 유형의 컨테이너에 배치 될 수 있습니다. uvm_object가 uvm_void에서 파생 된 경우 uvm_void에서 파생 클래스가 어떤 UVM 기능을하지 말았어야 때문에

후 어떻게 UVM 기능을 가지고 않지만, uvm_object는 복제, 인쇄, 포장, 풀고, 기록, 비교 등과 같은 방법이있다

클래스를 작성할 때 uvm_ * extend uvm_ * eg. uvm_component 클래스는 상속을 유추합니까? 어딘가에는 하위 유형이라는 단어도 언급됩니다. 하위 클래스는 파생 클래스와 같은가요?

enter image description here

답변

2

A '파생 클래스'는 서브 타입의 한 형태이다. uvm_object가 uvm_void에서 파생 된 경우 Subtypes vs Derived Types in C++

, 그럼 어떻게 uvm_void에서 파생 클래스가 어떤 UVM 기능을하지 말았어야 이후는 UVM 기능을 가지고 있지만, uvm_object는 복제, 인쇄, 포장, 풀고, 기록 등의 방법을 가지고 않습니다 비교

이 개념은 올바르지 않습니다. 파생 클래스는 새로운 기능을 구현할 수 있습니다. 제한, 개체는 추상 클래스에서 만들 수 없습니다. 부모 클래스 핸들은 하위 유형 인 한 모든 객체를 가리킬 수 있습니다. 핸들은 자체 유형의 메소드 및 멤버와 오버라이드 된 가상 메소드에만 액세스 할 수 있습니다. 따라서 핸들이 부속 유형 오브젝트를 가리키는 경우, 해당 부속 유형으로 추가 된 메소드 또는 구성원에 액세스 할 수 없습니다.

uvm_void은 빈 추상 클래스입니다. 당신은 UVM 소스 코드에 보면 당신은 두 개의 선으로 더럽 표시됩니다

uvm_void의 목적은 그래서 나중에 어떤 UVM을 저장할 수있는 생성 될 수있는 일반적인 컨테이너에 공통 부모 타입을 가지고있다

virtual class uvm_void; 
endclass 
관련 개체. 이러한 컨테이너는 에 관계없이 uvm_void을 상속 한 사용자 정의 클래스를 보유 할 수도 있습니다 (실제로는 수행하지 않아야 함).

uvm_object은 UVM에서 사용되는 기본 기능을 구현합니다. 대다수의 UVM 클래스는 uvm_object 또는 해당 하위 유형 중 하나를 상속합니다.