什么网站可以做网站,seo技术培训宁波,使用django做网站,wordpress配置七牛云cdnC虚函数
在C中#xff0c;虚函数#xff08;Virtual Function#xff09;是一个使用关键字virtual声明的成员函数#xff0c;它在基类中被声明#xff0c;以便在任何派生类中被重写#xff08;Override#xff09;。使用虚函数的目的是实现多态性——一种允许使用基类指…C虚函数
在C中虚函数Virtual Function是一个使用关键字virtual声明的成员函数它在基类中被声明以便在任何派生类中被重写Override。使用虚函数的目的是实现多态性——一种允许使用基类指针或引用来调用派生类方法的能力。
基本概念
当派生类重写了基类中的虚函数后通过基类的指针或引用调用该函数时C运行时会根据对象的实际类型来决定调用哪个类的成员函数。这种机制称为“动态绑定”或“晚期绑定”。相反没有使用虚函数的情况下函数的调用会在编译时决定称为“静态绑定”或“早期绑定”。
示例
#include iostream
#include stringusing namespace std;
/*
虚函数virtual在父类中声明允许派生类重写该函数实现多态。
override:在子类中重写虚函数在子类中更具体的实现函数功能。只在子类中使用。类中有虚函数通常要把析构函数也写成虚的。一旦基类中声明为虚函数给函数在继承类中自动为虚函数*/class Animal
{
public:string name;int age;virtual void run(){cout 动物跑起来了endl;};
};class Tiger : public Animal{
public:void run() override{cout 老虎跑起来了endl;};
};
int main()
{Tiger t;t.run(); //调用的是子类中的cout Hello World! endl;return 0;
}class Base {
public:virtual void show() {cout Base class show endl;}
};class Derived : public Base {
public:void show() override {cout Derived class show endl;}
};在这个示例中Base类有一个虚函数show而Derived类重写了这个函数。如果你有一个指向Derived对象的Base类指针并调用show函数将会执行Derived类的show函数。