📅  最后修改于: 2023-12-03 15:13:45.318000             🧑  作者: Mango
在C++中,虚函数是一种被用来实现多态的机制。当基类中的成员函数被声明为虚函数时,子类可以重写该函数并实现自己的行为。使用虚函数可以允许代码动态地调用子类中的函数,而不是只能调用基类中的函数。
在C++中,使用关键字virtual
来声名一个虚函数。下面是一个基类Shape
的例子:
class Shape {
public:
virtual void draw() {
cout << "I am a shape" << endl;
}
};
在这个例子中,Shape
类有一个虚函数draw()
。可以看到,该函数前面有virtual
关键字。
在子类中,可以使用相同的函数名和参数列表来重写虚函数。下面是一个子类Rectangle
的例子:
class Rectangle : public Shape {
public:
void draw() {
cout << "I am a rectangle" << endl;
}
};
在这个例子中,Rectangle
类重写了Shape
类的draw()
函数。
当使用虚函数时,C++会在运行时决定到底调用哪个函数。这个过程叫做动态绑定。下面是一个示例代码:
int main() {
Shape *shape;
Rectangle rect;
shape = ▭
shape->draw();
return 0;
}
在这个示例代码中,Shape
指针被设置为指向Rectangle
对象。在调用draw()
函数时,C++会自动调用Rectangle
类中的draw()
函数。
虚函数是一种实现多态的机制,可以允许代码动态地调用子类中的函数。声明虚函数需要使用关键字virtual
,而重写虚函数需要使用相同的函数名和参数列表。动态绑定是C++自动调用合适的函数的机制。