基类和派生类的指针调用函数
时间: 2023-09-28 21:05:46 浏览: 100
4-20实验题目1
当基类和派生类都有同名函数时,通过基类或派生类的指针调用函数时,会根据指针类型来决定调用哪个函数。如果指针类型是基类类型,则调用基类的函数;如果指针类型是派生类类型,则调用派生类的函数。
例如,假设有一个基类Animal和一个派生类Dog,它们都有一个同名的函数speak()。如果有一个Animal类型的指针指向一个Dog对象,那么通过该指针调用speak()函数时,会调用Dog类中的speak()函数,而不是Animal类中的speak()函数。
示例代码如下:
```c++
class Animal {
public:
virtual void speak() {
cout << "Animal speaks" << endl;
}
};
class Dog : public Animal {
public:
void speak() {
cout << "Dog barks" << endl;
}
};
int main() {
Animal* ptr = new Dog();
ptr->speak(); // 调用Dog类中的speak()函数
delete ptr;
return 0;
}
```
阅读全文