父类指针调用子类里面的函数
时间: 2023-10-02 20:08:23 浏览: 110
父类指针指向一个子类对象时,可以通过该指针调用子类中的函数,但需要注意以下两点:
1. 子类中的函数必须是父类中的函数的重写(override),即使用virtual关键字定义的虚函数。
2. 如果子类中的函数和父类中的函数同名,且子类中的函数不使用override关键字定义,那么父类指针调用该函数时,会调用父类中的函数而不是子类中的函数。
示例代码如下:
```
#include <iostream>
using namespace std;
class Base {
public:
virtual void func() {
cout << "Function in Base class." << endl;
}
};
class Derived : public Base {
public:
void func() override {
cout << "Function in Derived class." << endl;
}
};
int main() {
Base* p = new Derived;
p->func(); // 调用Derived类中的函数
delete p;
return 0;
}
```
在上面的例子中,Base类中定义了一个虚函数func(),Derived类继承自Base类,并重写了func()函数。在main函数中,通过Base类的指针p指向Derived类的对象,并调用了func()函数,由于该函数是虚函数且被Derived类重写了,因此会调用Derived类中的函数。
阅读全文