THEVARIABLE を THECLASS にキャストしようとすると、0 が返されることを読みdynamic_cast<THECLASS>(THEVARIABLE)
ました (THEVARIABLE が THECLASS のクラスではなく、THECLASS の子孫でもないと仮定します)。ランタイム チェックを行う必要があるため、dynamic_cast の方が遅いと聞きました。オブジェクト チェックのために多くのループを実行した場合、dynamic_cast は遅くなりませんか (100 個のオブジェクトなど)。
次のような型チェックを行う静的クラスを作成した場合、それはより良い (より速い?) でしょうか? (構文エラーがあれば無視します):
class TYPECHECK {
public:
inline static bool isInt(int a) {
return true;
}
template<typename wrongtype>
inline static bool isInt(wrongtype a) {
return false;
}
[...]
private:
TYPECHECK();
};
int main() {
int a = 5;
char b = 'd';
TYPECHECK::isInt(a); //true
TYPECHECK::isInt(b); //false
return 0;
}
intだけでなく、より複雑な型に対してこれを行ったと仮定します。このクラスの実装は、for ループ内にある場合、dynamic_cast (チェックに使用) よりも高速でしょうか?
前もって感謝します。
編集
twsansbury には、訪問者パターンの例を推奨して含めるための適切な回答があります。