该程序的输出是: 8 Dog bark

程序中定义了一个Animal类和一个Dog类,Dog类是Animal类的派生类。Animal类中有两个虚函数,分别是bark()和show()。Dog类重写了bark()函数。

在主函数中,先输出了Animal类的大小,结果为8字节。然后创建了一个Dog对象wc。接下来使用循环遍历wc对象的虚函数表,通过指针调用虚函数。

循环中的第一次迭代,i为0,通过指针操作获取到Dog类的虚函数表的第一个函数指针,并将其转换为正确的函数类型。然后调用该函数,输出"Dog bark"。

循环中的第二次迭代,i为1,通过指针操作获取到Dog类的虚函数表的第二个函数指针,并将其转换为正确的函数类型。然后调用该函数,由于Dog类没有重写show()函数,所以会调用父类Animal的show()函数,输出"Animal show"。

因此,程序的输出为: 8 Dog bark Animal show

#include iostream閲嶈浇 闅愯棌 閲嶅啓瑕嗙洊using namespace std;class Animalpublic	virtual void bark 		cout Animal barkn endl;		virtual void show 		cout Animal shown endl;	;class Dog public Animalpublic	v

原文地址: http://www.cveoy.top/t/topic/iMMs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录