Listing 7

using namespace System;

public ref class Derived : Base, ICloneable
{
     array<int>^ dPair;
public:
     Derived(int bi, int bj, int i, int j) : Base(bi, bj)
     {
          dPair = gcnew array<int>(2) {i, j};
     }
     void SetValue(int bi, int bj, int i, int j)
     {
          Base::SetValue(bi, bj);
          dPair[0] = i;
          dPair[1] = j;
     }
     virtual String^ ToString() override
     {
          return String::Concat("[{", Base::ToString(),
               "}", dPair[0], ":", dPair[1], "]");
     }
     virtual Object^ Clone() override
     {
          Derived^ d = static_cast<Derived^>(Base::MemberwiseClone());
//        Derived^ d = static_cast<Derived^>(Base::Clone());
          d->dPair = static_cast<array<int>^>(dPair->Clone());
          return d;
     }
};