Mega Code Archive

 
Categories / Visual C++ .NET / Class
 

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 }