c++中虚函数如何用
更新时间:2023-11-23概述
在C++中,虚函数是一种允许运行时动态绑定的函数。虚函数的使用可以实现多态性,这是一种面向对象编程的重要特性。通过将函数声明为虚函数,可以使派生类对象在调用该函数时,根据其实际类型调用正确的实现。
虚函数的声明和定义
要将一个成员函数声明为虚函数,只需在其声明前面加上virtual
关键字即可。虚函数可以在基类中声明,然后在一个或多个派生类中进行重写。
以下是虚函数的声明和定义的一般形式:
class Base { public: virtual void myFunction(); // 虚函数声明 }; void Base::myFunction() { // 实现虚函数 }
派生类中的虚函数重写
在派生类中,如果要重写基类中的虚函数,需要在函数声明和定义中使用override
关键字。这样做可以显式地告诉编译器,此函数是对基类中的虚函数进行重写。
以下是派生类中重写虚函数的示例:
class Derived : public Base { public: void myFunction() override; // 虚函数重写声明 }; void Derived::myFunction() { // 重写虚函数的实现 }
虚函数调用和多态性
当通过指针或引用访问对象时,可以实现多态性。基类指针或引用可以指向派生类对象,并通过调用虚函数来实现动态绑定。
以下是通过基类指针调用虚函数的示例:
Base* basePtr = new Derived(); basePtr->myFunction(); // 调用的是Derived类中的myFunction() delete basePtr;
此示例中,通过创建一个指向Derived类对象的Base类指针,将其赋值给基类指针basePtr
。然后,通过该指针调用myFunction()
,将会调用Derived类中的重写函数。
总结
虚函数是C++中实现多态性的重要机制。通过将函数声明为虚函数,可以在派生类中对其进行重写,并通过基类指针或引用调用适当的函数实现动态绑定。虚函数的使用使得程序能够根据对象的实际类型进行正确的函数调用,增强了代码的可扩展性和灵活性。