虚函数如何实现
时间: 2023-08-28 20:18:04 浏览: 71
虚函数的实现需要使用关键字 "virtual",并将其定义在父类中。当子类继承父类时,如果子类想要重写父类的虚函数,只需要在子类中重新定义该函数即可。在运行时,当通过父类指针或引用调用虚函数时,程序会动态地确定应该调用哪个版本的虚函数,即父类的虚函数还是子类的重写函数。这个过程称为动态绑定或动态多态。下面是一个简单的虚函数的实现示例:
```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 *animal = new Animal();
Dog *dog = new Dog();
animal->speak(); // 输出:Animal speaks!
dog->speak(); // 输出:Dog barks!
Animal *p = dog;
p->speak(); // 输出:Dog barks!
delete animal;
delete dog;
return 0;
}
```
在上面的示例中,Animal 类中定义了一个虚函数 speak(),并在 Dog 类中重写了这个函数。在 main 函数中,我们分别创建了一个 Animal 类型和一个 Dog 类型的对象,并分别调用了它们的 speak() 函数。同时,我们将 Dog 类型的对象赋值给了 Animal 指针类型的变量 p,然后调用了 p 的 speak() 函数。由于 speak() 是一个虚函数,程序会动态地确定应该调用哪个版本的函数,因此输出了 "Dog barks!"。
阅读全文