virtualについて

[戻る]
ごみ 2002/01/07(月) 10:19:51
「オーバライド」とは基本クラスのクラスのメソッドを派生させたクラスのメソッドで置き換えることと理解しています。そして「オーバライド」を実現するために、「仮想関数」としてクラス定義する必要があるということで、これまではvirtualをつけて定義していました。

けれど、いろいろな書物をよんでいるうちにvirtualを付けずに「オーバライド」を実現している場合もあるようです。

このvirtualは必ずしも付けなくて良いのでしょうか?
もともとvirtualを付ける本当の意味が分からなくなってしまったので質問しました。ご存知の方、よろしくお願いします

aki [HomePage] 2002/01/07(月) 12:36:42
virtualをつけるのは派生クラスのポインタを、
基底クラスのポインタにアップキャストして使う場合です。

このポインタからある関数を呼んだ場合、
virtualがあると派生クラスの関数が呼ばれますが、
virtualが無いと基底クラスの関数が呼ばれます。

ごみ 2002/01/07(月) 12:57:53
akiさん、レスありがとうございます。

なるほど、今まで派生クラスの関数を呼ぶのが「オーバライド」であると思っていました。勉強になりました。

”「オーバライド」とは基本クラスのクラスのメソッドを派生させたクラスのメソッドで置き換えること”
という自分の解釈はまちがっていたのでしょうか?

もともと、ある参考書に上のように記述してあったのですが・・・

aki [HomePage] 2002/01/07(月) 15:59:32
> ”「オーバライド」とは基本クラスのクラスのメソッドを派生させたクラスのメソッドで置き換えること”
> という自分の解釈はまちがっていたのでしょうか?

まちがってないと思いますよ。

ごみ 2002/01/07(月) 16:34:16
[[解決]]
akiさん、度々ありがとうございます。
自分でも調べてみました。トンチンカンなことを聞いてすみませんでした。

古いスレッドには追加発言できません。