关键字virtual隐式对函数有什么作用? (编译器如何考虑带有virtual关键字的函数)

时间:2018-12-17 20:15:49

标签: c++ class pointers keyword

到目前为止,我已经访问了很多链接。
我似乎了解如何使用关键字virtual
但是我仍然不了解它对函数的作用。(不用讲课了!)

我猜想它可能会做什么。.
请允许我通过以下代码片段进行自我解释

课程

  class stars 
{ 
    public :
        void describe { cout << "Stars are bright objects\n"}
};

  class sun : public stars
{
    public: 
        void describe { cout << "Sun is visibly the most brightest star\n";}
};

主要功能

  void main()
{
    sun *ptr = new sun;   
     stars *spt = ptr;
    ptr -> describe();        //Output line1: "Sun is visibly the most brightest star"  
    spt->describe();          //Output line2: "Stars are bright objects"
    ((sun*)stp) -> describe() //Output line3: "Sun is visibly the most brightest star"
}

现在,我是否在virtual中的void describe()之前使用过class stars。 第二行可能有所不同。 我相信是因为关键字virtual影响了功能的工作方式。
(即)在执行stp -> describe();时,函数stars::describe()会找到与存储在stp中的地址相关的对象类型,并因此对要调用的函数进行优先级排序。

如果我不清楚自己的意思,请发表评论(这是我的第一个问题)
非常感谢您宝贵的时间阅读本文,

0 个答案:

没有答案