オーバーライドにて引数のdefault値を設定

前回書いた「task/functionのオーバーロードを検討してみた。」で面白いことが出来たのでメモ。オーバーロードを検討する一つの手段として、オーバーライド(継承して新たな関数を定義)を使ったが、新たな関数に対しては引数のdefault値を変更出来るみたい。
  • サンプルコード
     1|class base;
     2|  virtual function void show(int a, int b);
     3|    $display("—- a = %3d, b = %3d", a, b);
     4|  endfunction
     5|endclass
     6|
     7|class hoge extends base;
     8|  function void show(int a, int b=0);
     9|    $display("—- a = %3d", a);
    10|  endfunction
    11|endclass
    12|
    13|module tb;
    14|
    15|  base  cl_base  = new;
    16|  hoge  cl_hoge  = new;
    17|
    18|  int i,j;
    19|
    20|  initial begin
    21|    i = 10; j = 4;
    22|    cl_base.show(i,j);
    23|    cl_hoge.show(i);
    24|    $finish;
    25|  end
    26|
    27|endmodule

解説


ここでは、baseクラスとbaseクラスを継承した hogeを作成している。
その中で、show関数を定義しているが hogeクラスでは第二引数(b)に
対して初期値を与えている。そのことに寄って第二引数を省略出来る(L23)
逆の記述も可能で、baseクラスに初期値を与えておいて継承したクラスには
初期値無しにすると、必ず指定しないといけないようになる。

疑問


外部から、つまり今回の場合だと cl_hogeから baseクラスshowを呼び出す
場合がわからなかった。hogeクラス内では、 super が使えるのだが。。。
うーん???多態性はない?
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数