int main()
{
Derived^ d1 = gcnew Derived(10, 20, 30, 40);
Console::WriteLine("d1 = {0}", d1);
Derived^ d2 = static_cast<Derived^>(d1->Clone());
Console::WriteLine("d2 = {0}", d2);
d1->Base::SetValue(5, 6);
Console::WriteLine("d1 = {0}", d1);
Console::WriteLine("d2 = {0}", d2);
}