虚函数是C++中的一个重要概念,它主要用于实现多态。在基类中声明一个虚函数,派生类可以重写这个函数,从而实现不同的功能。当基类指针或引用指向派生类对象时,调用虚函数会根据实际对象类型来调用相应的派生类中的函数实现,这就是多态的体现。
举例说明:
#include <iostream>
using namespace std;
?
// 基类
class Animal {
public:
// 虚函数
virtual void makeSound() {
cout << "Animal makes a sound" << endl;
}
};
?
// 派生类1
class Dog : public Animal {
public:
// 重写虚函数
void makeSound() override {
cout << "Dog barks" << endl;
}
};
?
// 派生类2
class Cat : public Animal {
public:
// 重写虚函数
void makeSound() override {
cout << "Cat meows" << endl;
}
};
?
int main() {
// 基类指针指向派生类对象
Animal* animalPtr = new Dog();
animalPtr->makeSound(); // 输出:Dog barks
?
delete animalPtr;
?
// 基类引用指向派生类对象
Animal& animalRef = *new Cat();
animalRef.makeSound(); // 输出:Dog barks
?
delete &animalRef;
system("pause");
return 0;
}
?
在这个例子中,基类Animal有一个虚函数makeSound(),派生类Dog和Cat分别重写了这个函数。当我们使用基类指针或引用指向派生类对象时,调用makeSound()会根据实际对象类型(即Dog或Cat)来调用相应的派生类中的函数实现。这就是虚函数实现多态的一个典型例子。