スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

オーバーライドにて引数の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
イベントカレンダー

カレンダー
08 | 2017/09 | 10
- - - - - 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
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。