Explicit Overrides
Visual Studio .NET 2003
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)