91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

virtual method怎么使用

發布時間:2021-12-17 16:27:58 來源:億速云 閱讀:292 作者:iii 欄目:互聯網科技

本篇內容介紹了“virtual method怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

method是class中子程序,包括function和task。

當直接將子類賦值給父類,再調用父類中的方法時,實際調用的還是父類中的方法。除非該方法被virtual聲明,子類就可以覆蓋父類中的方法。

這是systemverilog面向對象語言的多態(polymorphism)特征。

用關鍵字virtual聲明的SystemVerilog方法稱為virtual methods。

Virtual Functions模板:


virtual function function_name;//Function definitionendfunction

Virtual Tasks模板:


virtual task task_name;//task definitionendtask

在示例1中,父類內部的方法聲明時沒有virtual關鍵字,賦值后b_c.display()將調用父類的方法。

class base_class;
 function void display;    $display("Inside base_class");  endfunction
endclass
class extended_class extends base_class;
 function void display;    $display("Inside extended class");  endfunction
endclass module virtual_class;  initial begin    base_class    b_c;    extended_class e_c;
   e_c = new();    b_c = e_c;
   b_c.display();  endendmodule

 輸出:


Inside base_class

 

在示例2中,父類內部的方法聲明時加上virtual關鍵字,賦值后b_c.display()將調用子類的方法。


class base_class;
 virtual function void display;    $display("Inside base_class");  endfunction
endclass
class extended_class extends base_class;
 virtual  function void display;    $display("Inside extended class");  endfunction
endclass module virtual_class;  initial begin    base_class    b_c;    extended_class e_c;
   e_c = new();    b_c = e_c;
   b_c.display();  endendmodule

輸出:


Inside extended class

pure virtual method

virtual method:這是一種可以在派生類中繼承的方法,該方法可以在派生類中被覆蓋。

pure virtual method:這是在Virtual Class(可以擴展但不能實例化的類,僅作為基礎類或原型類)中聲明的virtual method。在派生類必須具有該方法的具體實現。

pure virtual method只能是原型或模板。

pure virtual method內部不能具有任何實現。

pure virtual method不允許使用“ end”關鍵字,例如endfunction / endtask。

virtual class base_class;  pure virtual function void display;endclass
class extended_class extends base_class;  virtual  function void display;    $display("Inside extended class");  endfunctionendclass
module virtual_class;  initial begin    extended_class e_c;    e_c = new();    e_c.display();  endendmodule

如果有一個帶有pure virtual method的Virtual Class,則必須在子類中對其具體實現。但對于virtual method,可以覆蓋也可以不覆蓋。

“virtual method怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓬安县| 穆棱市| 长沙市| 西乡县| 镇坪县| 辉县市| 定襄县| 西乌| 通城县| 肇东市| 禄丰县| 临海市| 错那县| 土默特左旗| 普格县| 大洼县| 昌邑市| 大埔区| 霍州市| 胶南市| 遂川县| 云梦县| 舞钢市| 文登市| 平江县| 偃师市| 崇仁县| 湖州市| 崇礼县| 威宁| 洛隆县| 贺州市| 阳新县| 慈溪市| 永宁县| 黔江区| 呼伦贝尔市| 娱乐| 江北区| 西城区| 鹤壁市|