怎样在c++中实现instanceof?

2023-05-12 阅读 53

在C++中,没有像Java中的instanceof运算符那样的内置运算符。但是,你可以使用dynamic_cast操作符来实现类似的功能。

dynamic_cast操作符可以将一个指针或引用转换为另一个类的指针或引用,如果转换成功,返回转换后的指针或引用,否则返回空指针或引用。

例如,假设我们有一个基类Animal和两个派生类Dog和Cat,我们想要检查一个指针是否指向Dog类的实例,可以使用dynamic_cast操作符:

Animal* animal = new Dog();
Dog* dog = dynamic_cast<dog*>(animal);
if (dog != nullptr) {
    // animal指向Dog类的实例
} else {
    // animal指向其他类型的实例
}

在上面的代码中,我们将Animal类型的指针animal转换为Dog类型的指针dog,如果转换成功,说明animal指向Dog类的实例,否则说明animal指向其他类型的实例。</dog*>

更新于 2023年05月17日