帮我看段代码

[复制链接]
查看11 | 回复2 | 2009-4-30 12:00:05 | 显示全部楼层 |阅读模式
#include "stdafx.h"
using namespace System;
interface class IBase1//接口IBase1
{
void same();
void dif(int);
void f1();
};
interface class IBase2//接口IBase2
{
void same();
void dif(int);

void f2();
};
ref class COne:public IBase1,public IBase2//类继承多个接口
{
public:
// 继承不同接口中相同的方法定义,实现成同一个方法
virtual void same()
{
Console::WriteLine("implement both IBase1::same() and IBase2::same()");
}
//继承不同接口中相同的方法定义,显式重载,实现成不同的方法

virtual void dif1(int i) = IBase1::dif
{
Console::WriteLine("In COne::IBase1::dif({0})",i.ToString());
}
virtual void dif2(int i) = IBase2::dif
{
Console::WriteLine("In COne::IBase2::dif({0})",(i+1).ToString());
}
virtual void f1()//不同的方法不用指定所指接口
{
Console::WriteLine("In COne::IBase1::f1()");
}
virtual void f2()
{
Console::WriteLine("In COne::IBase2::f2()");
}
};
int main(array ^args)
{
IBase1^ p1=gcnew COne();
IBase2^ p2=(IBase2^)(p1);//将p1转换成IBase2类型
p1->same();
p1->dif(1);
p1->f1();
p2->same();
p2->dif(1);
p2->f2();
Console::ReadLine();
return 0;
}

托管代码.应该也基本能看懂~~分析程序如何运行就成
是托管C++
wanfustudio 这样的回答一率投诉

回复

使用道具 举报

千问 | 2009-4-30 12:00:05 | 显示全部楼层
我没装VS。以下是猜测结果!p1->same();//这两个肯定是相同的p1->dif(1);//运行IBase1p1->f1(); //运行IBase1p2->same();//这两个肯定是相同的p2->dif(1);//运行IBase2p2->f2(); //查了一下资料,接口没有此方法。但你定义的是COne类,那里面有此方法。所以应该会运行IBase2这都是根据类继承的多态性决定的!...
回复

使用道具 举报

千问 | 2009-4-30 12:00:05 | 显示全部楼层
C# ?不懂...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行