Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

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:
© 2014 Microsoft. All rights reserved.