虚函数

概念

微软官方文档介绍: A virtual function is a member function that you expect to be redefined in derived classes.When you refer to a derived class object using a pointer or a reference to the base class, you can call a virtual function for that object and execute the derived class’s version of the function.

本质上,虚函数是成员函数的一种。它主要应用在多态的场景。它是为了我们能够在定义子类时可以重载从父类继承过来的成员函数(即虚函数)。如果不需要重载,我们也可以直接调用执行它,把它当作普通的成员函数。

代码演示(C++)

我们可以写一个父类和一个子类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class parent
{
public:
void A()
{ std::cout<<"This parent's A" <<endl; }
virtual void B()
{ std::cout<<"This parent's B" <<endl; } //虚函数就是在成员函数前加一个virtual
};

class son : public parent
{
public:
void A(){ std::cout<<"This son's A"<<endl;}
void B(){std::cout<<"This son's B"<<endl;}
};

然后我们调用它:

1
2
3
4
5
6
int main()
{
parent* SON = new son();
SON->A();
SON->B();
}

运行结果如图:

结果

从结果来看,parent类里的B已经被son类的B重载了。

底层原理

那么追根究底,虚函数底层逻辑是什么呢?

作者

Dylan Zhu

发布于

2021-02-28

更新于

2021-03-23

许可协议

# 相关文章
  1.智能指针
评论

:D 一言句子获取中...