の使用に関する質問で、typeid
C ++を使用して、オブジェクト比較で型を比較できることを提案しました。私はそれがあまり行われていないのを見たことがありませんが、Javaequals
を念頭に置いていました。
Javaをもう少し詳しく見てみると、これが当てはまるようです。2つのオブジェクトの実際のクラスを比較する必要があると言う人もいれば、おそらくダブルディスパッチで使用するのに適切なツールであると言う人もいます。 instanceof
もちろん、2つのうちの1つが決定的に適している場合もありますが、少なくとも両方のオプションが考慮されます。
C ++、OTOHでは、実際の型が比較されるコードをほとんど見つけることができませんでした。ほとんどの場合、ダブルディスパッチが使用され(とdynamic_cast
)、等価性チェックの開始時に迅速な型比較が正しいことであると主張する人は誰も見つかりませんでした。
ポリモーフィック型の比較の問題がJavaで2つの受け入れ可能な解決策を持っているのに、C ++では1つだけがベストプラクティスと見なされているように見えるのはなぜだろうか?技術的に大きな違いはありますか、それとも単に異なるアプローチですか?
注:私の主張は、具体的な知識ではなく、印象に基づいています。それらが間違っていて、JavaとC ++がその点で実際に類似している場合、または上記以外の理由で異なる場合、それは明らかに許容できる答えになります。