Explicit Overrides
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

Explicit Overrides

If the same virtual function is declared in two or more interfaces and if a class is derived from these interfaces, you can explicitly override each virtual function.

The following code example illustrates how to use explicit overrides:

// deriv_ExplicitOverrides.cpp
// compile with: /GR
extern "C" int printf(const char *, ...);

__interface IMyInt1
{
   void mf1();
   void mf1(int);
   void mf2();
   void mf2(int);
};

__interface IMyInt2
{
   void mf1();
   void mf1(int);
   void mf2();
   void mf2(int);
};

class CMyClass : public IMyInt1, public IMyInt2
{
public:
   void IMyInt1::mf1()
   {
      printf("In CMyClass::IMyInt1::mf1()\n");
   }

   void IMyInt1::mf1(int)
   {
      printf("In CMyClass::IMyInt1::mf1(int)\n");
   }

   void IMyInt1::mf2();
   void IMyInt1::mf2(int);

   void IMyInt2::mf1()
   {
      printf("In CMyClass::IMyInt2::mf1()\n");
   }

   void IMyInt2::mf1(int)
   {
         printf("In CMyClass::IMyInt2::mf1(int)\n");
   }

   void IMyInt2::mf2();
   void IMyInt2::mf2(int);
};

void CMyClass::IMyInt1::mf2()
{
   printf("In CMyClass::IMyInt1::mf2()\n");
}

void CMyClass::IMyInt1::mf2(int)
{
   printf("In CMyClass::IMyInt1::mf2(int)\n");
}

void CMyClass::IMyInt2::mf2()
{
   printf("In CMyClass::IMyInt2::mf2()\n");
}

void CMyClass::IMyInt2::mf2(int)
{
   printf("In CMyClass::IMyInt2::mf2(int)\n");
}

int main()
{
   IMyInt1 *pIMyInt1 = new CMyClass();
   IMyInt2 *pIMyInt2 = dynamic_cast<IMyInt2 *>(pIMyInt1);

   pIMyInt1->mf1();
   pIMyInt1->mf1(1);
   pIMyInt1->mf2();
   pIMyInt1->mf2(2);
   pIMyInt2->mf1();
   pIMyInt2->mf1(3);
   pIMyInt2->mf2();
   pIMyInt2->mf2(4);

   delete pIMyInt1;
}

Output

In CMyClass::IMyInt1::mf1()
In CMyClass::IMyInt1::mf1(int)
In CMyClass::IMyInt1::mf2()
In CMyClass::IMyInt1::mf2(int)
In CMyClass::IMyInt2::mf1()
In CMyClass::IMyInt2::mf1(int)
In CMyClass::IMyInt2::mf2()
In CMyClass::IMyInt2::mf2(int)

See Also

Derived Classes

Show:
© 2016 Microsoft