base and interface
#include "stdafx.h" using namespace System; ref class MyClass{ public: virtual void f() { Console::WriteLine("MyClass::f"); } virtual void g() { Console::WriteLine("MyClass::g"); } }; interface class MyInterface{ void f(); void g(); }; ref class C : MyClass, MyInterface{ public: virtual void f() new{ Console::WriteLine("C::f"); } virtual void g() override{ Console::WriteLine("C::g"); } }; int main() { MyClass^ b = gcnew MyClass(); C^ c = gcnew C(); MyInterface^ i = c; b->f(); // calls MyClass::f c->f(); // calls C::f i->f(); // calls C::f since C::f implements MyInterface::f MyClass^ bc = c; // b pointing to instance of C bc->f(); // calls MyClass::f since C::f is unrelated b->g(); // calls MyClass::g c->g(); // calls C::g i->g(); // calls C::g since C::g implements MyInterface::g bc->g(); // calls C::g since C::g overrides MyClass::g }