qq_41201793 2020-11-25 20:55 采纳率: 0%
浏览 34

#C++虚函数表# 虚函数指针访问顺序是怎样的?

#include <iostream>
class Base
{
public:
	virtual void func()
	{
		cout << "Base!" << endl;
	}
};
class Derived :public Base
{
public:
	virtual void func(int a)
	{
		cout << "Derived!" << endl;
	}
};

Derived derived;

int main() {
    derived.func(1);//此句未报错
	derived.func();//此句编译器提示少参数
    return 0;
}

看了下大佬关于虚函数指针与虚函数表的解释

按照大佬的思路,Base::func()应该在Derived::func(int)之前,为什么编译器却默认匹配Derived::func(int)呢?

求大佬解惑

  • 写回答

1条回答 默认 最新

  • wlj1234 2020-11-25 21:20
    关注

    没研究过底层虚函数指针,个人理解不同参数的函数地址是不同的Base::func和Derived::func(int)是不一样的,调用Derived::func(int)时直接从Derived::func(int)地址开始执行

    评论

报告相同问题?

悬赏问题

  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错