可以使用 dynamic_cast 来判断某个对象是否重写了父类的虚函数。如果转换成功,则说明该函数已被重写,如果转换失败,则说明该函数没有被重写。
可以如下判断子类是否重写了父类的虚函数func()
class Base {
public:
virtual void func() {}
};
class Derived: public Base {
// 重写
void func() override {}
};
Derived obj;
if(dynamic_cast<Base*>(&obj) == &obj) {
std::cout << "o