0
請幫助我瞭解SystemVerilog中虛擬類的需求。在SystemVerilog中,虛擬類是否與抽象類相同?
對於抽象類,我們可以在SystemVerilog中使用Interface。這兩者有什麼區別?
請幫助我瞭解SystemVerilog中虛擬類的需求。在SystemVerilog中,虛擬類是否與抽象類相同?
對於抽象類,我們可以在SystemVerilog中使用Interface。這兩者有什麼區別?
是的,SystemVerilog中的抽象類與虛擬類相同。 Java使用關鍵字'abstract',但其他語言(如C++)沒有特定的關鍵字。 SystemVerilog重新使用關鍵字virtual
以免保留其他關鍵字。抽象類只是一個構造函數受保護而不能直接構造的類,您必須首先擴展該類,然後才能構造派生對象。 抽象類允許另一個概念是純粹的虛擬方法。這些是必須在擴展類中重寫的方法。像UVM這樣的基類庫充滿了抽象類,並且擁有必須重寫的方法,如複製或打印方法。 僅包含純虛擬方法的抽象類稱爲interface class
,您可以定義實現多個接口類的接口類。這一年DVCon有許多關於這個話題的論文。
謝謝@ dave_59解釋並給出這些論文的鏈接。 – AnuragChauhan
@ dave_59我會小心的說,構造函數是受保護的,正因爲如此,你不能直接構造它。這稍微暗示你可以從另一個類的函數中調用構造函數(例如,像在單例模式中那樣)。具有受保護構造函數的類不包含抽象類。 –
是的 - 一個受保護的構造函數是一個不完美的類比 –