当编译器遇到虚函数时会发生什么?

问题描述

当编译器遇到 virtual 关键字时会发生什么?

代码

#include<iostream>
using namespace std;

class A{
    public:
    virtual void display(){
        cout << "hello,in class A display()" << endl;
    }
    virtual void funb(){
        cout << "in class A funb()";
    }
};

class B : public A{
    public:
    void funb(){
        cout << "in funb() of class B" << endl;
    }
};
int main(){
    A *a,c;
    B b;
    a = &b;
    a->funb();
    return 0;
}

在编译时,通过查看b的类型,它不能与funb()函数定义相关联吗? 究竟发生了什么?这个问题可能看起来很愚蠢,但我想澄清一下。 提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)