Listing 9
using namespace System;
public ref struct A
{
/*1a*/ void F0() { Console::WriteLine("A::F0"); }
/*1b*/ virtual void F1() { Console::WriteLine("A::F1"); }
/*1c*/ virtual void F2() { Console::WriteLine("A::F2"); }
//*1d*/ virtual void F3() { Console::WriteLine("A::F3"); }
};
public ref struct B : public A
{
/*2a*/ void F0() new { Console::WriteLine("B::F0"); }
/*2b*/ virtual void F1() override { Console::WriteLine("B::F1"); }
/*2c*/ virtual void F2() new { Console::WriteLine("B::F2"); }
private:
//*2d*/ void F3() new { Console::WriteLine("B::F3"); }
};
public ref struct C : public B
{
/*3a*/ void F0() new { Console::WriteLine("C::F0"); }
/*3b*/ virtual void F1x() override = B::F1 { Console::WriteLine("C::F1x"); }
/*3c*/ virtual void F2x() = B::F2 { Console::WriteLine("C::F2x"); }
//*3d*/ virtual void F3() { Console::WriteLine("C::F3"); }
};