如果在cpp代码中判断子类重写父类的哪些虚接口,没有重写哪些虚接口
时间: 2023-02-11 12:19:33 浏览: 109
在 C++ 代码中,可以使用 dynamic_cast<> 来判断子类是否重写了父类的虚函数。如果该子类对象重写了该虚函数,dynamic_cast<> 将返回该子类对象的指针,否则返回 nullptr。
以下是一个示例:
```
class Parent {
public:
virtual void foo() { ... }
};
class Child : public Parent {
public:
virtual void foo() { ... }
};
int main() {
Parent* p = new Child();
Child* c = dynamic_cast<Child*>(p);
if (c != nullptr) {
std::cout << "The child class has overridden the foo() function of the parent class." << std::endl;
} else {
std::cout << "The child class has not overridden the foo() function of the parent class." << std::endl;
}
return 0;
}
```
在这个例子中,程序将输出“The child class has overridden the foo() function of the parent class.”,因为 Child 类重写了 Parent 类的 foo() 函数。
需要注意的是,当父类的虚函数没有在子类中重写时,dynamic_cast 并不能识别出来。
阅读全文