c++二级上机考题

[复制链接]
查看11 | 回复1 | 2009-3-20 22:36:39 | 显示全部楼层 |阅读模式
//解释一下((C0*)(C1*)&obj)->print();
#include
class C0
{
public:
/********found********/
virtual void print()=0;
};
class C1: public C0
{
};
class C2: public C0
{
};
class C3:
/********found********/
public C1,
virtual private C2
{
virtual void print()
{
coutprint();//为什么会调用C3.print()
return 0;
}

回复

使用道具 举报

千问 | 2009-3-20 22:36:39 | 显示全部楼层
&obj表示obj对象的地址,经过(C0*)(C1*)两次指针类型强转,&obj成为了一个(C0*)类型的指针,并且virtual void print()=0; 在C0类型里为纯虚函数.而&obj实际指向的对象为C3类型的对象.所以,((C0*)(C1*)&obj)->print();调用C3类型里重写的虚函数:C3.print()...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行