- /*
- (C) EnzoYang 2008
- Filename : testIterface.cpp
- Compiler : Visual C++ 9.0 / Visual Studio 2008
- Description : test about C++/CLI Interface Overriding
- Release : 11/30/2008 1.0
- */
- #include "stdafx.h"
- using namespace System;
- interface class IB1
- {
- virtual void fun();
- virtual void f();
- };
- interface class IB2
- {
- void fun();
- };
- ref class D: IB1, IB2
- {
- private:
- virtual void fun1() = IB1::fun sealed//重写了B::fun
- {
- System::Console::WriteLine(L"D::fun1");
- };
- virtual void fun2() = IB2::fun sealed//重写了IB::fun
- {
- System::Console::WriteLine(L"D::fun2");
- };
- public:
- virtual void f()
- {
- System::Console::WriteLine(L"D::f");
- };
- virtual void fun() //与上面的重写无冲突
- {
- System::Console::WriteLine(L"D::fun");
- };
- };
- int main(array<System::String ^> ^args)
- {
- //String sstr;
- System::Console::WriteLine(L"********out put from an instance of D***********");
- D^ d = gcnew D;
- d->fun(); // "D::fun"
- d->f(); //"D::f"
- System::Console::WriteLine(L"********out put from an Interface IB1***********");
- IB1^ ib1 = d;
- ib1->fun(); //"D::fun1"
- ib1->f(); //"D::f"
- System::Console::WriteLine(L"********out put from an Interface IB2***********");
- IB2^ ib2 = d;
- ib2->fun(); // "D::fun2"
- String ^str = Console::ReadLine();
- return 0;
- }
从上面知道可以让接口中的函数在类的private中实现,也可以用与接口中那个函数不同的名字的函数取实现接口函数
- /*
- (C) EnzoYang 2008
- Filename : testIterface.cpp
- Compiler : Visual C++ 9.0 / Visual Studio 2008
- Description : test about C++/CLI Interface Overriding
- Release : 11/30/2008 1.0
- */
- #include "stdafx.h"
- using namespace System;
- interface class IB1
- {
- virtual void fun();
- };
- interface class IB2
- {
- void fun();
- };
- ref class D: IB1, IB2
- {
- public:
- virtual void fun() = IB1::fun
- {
- System::Console::WriteLine(L"D::fun");
- };
- };
- int main(array<System::String ^> ^args)
- {
- //String sstr;
- System::Console::WriteLine(L"********out put from an instance of D***********");
- D^ d = gcnew D;
- d->fun(); //"D::fun"
- System::Console::WriteLine(L"********out put from an Interface IB1***********");
- IB1^ ib1 = d;
- ib1->fun(); //"D::fun"
- System::Console::WriteLine(L"********out put from an Interface IB2***********");
- IB2^ ib2 = d;
- ib2->fun(); //"D::fun"
- String ^str = Console::ReadLine();
- return 0;
- }
在D中的fun式指名重写IB1接口的fun函数的情况下 , 如果IB2不能够找到其它函数指名重写它里面的fun函数时,编译器就会隐式指定D中的fun也重写IB2中的fun