在C++中,虚函数是一种可以被子类覆盖的成员函数。使用虚函数可以实现多态性,即不同的子类对象可以调用相同的虚函数,但是得到的结果不同。除了虚函数,C++还有另外一种函数,叫做弱虚函数(也叫做纯虚函数)。这篇博客将介绍虚函数和弱虚函数的区别。
虚函数是一种可以在基类中声明的函数,子类可以覆盖这个函数。当使用基类的指针或引用调用虚函数时,程序会动态地调用子类中的覆盖函数。虚函数的定义如下:
class Base {
public:
virtual void foo();
};
class Derived : public Base {
public:
void foo() override;
};
在这个例子中,Base
类中声明了一个虚函数foo()
,而Derived
类继承了Base
类并覆盖了foo()
函数。当我们使用一个指向Base
类对象的指针或引用调用foo()
函数时,程序会自动调用Derived
类中的foo()
函数。
弱虚函数是一种只在基类中声明,而没有实现的函数,它的语法如下:
class Base {
public:
virtual void foo() = 0;
};
在这个例子中,Base
类中声明了一个弱虚函数foo()
,但是没有实现。这就意味着Base
类不能被实例化,只