www.pudn.com > COM技术内幕配书源码.rar > IFACE.CPP


// 
// Iface.cpp 
// To compile, use: cl Iface.cpp 
// 
#include  
#include    // Define interface. 
 
void trace(const char* pMsg) {cout << pMsg << endl ;} 
 
// Abstract interfaces 
interface IX 
{ 
	virtual void __stdcall Fx1() = 0 ; 
	virtual void __stdcall Fx2() = 0 ; 
} ; 
 
interface IY 
{ 
	virtual void __stdcall Fy1() = 0 ; 
	virtual void __stdcall Fy2() = 0 ; 
} ; 
 
// Interface implementation 
class CA : public IX,  
           public IY 
{ 
public: 
 
	// Implement interface IX. 
	virtual void __stdcall Fx1() {cout << "CA::Fx1" << endl ;} 
	virtual void __stdcall Fx2() {cout << "CA::Fx2" << endl ;} 
 
	// Implement interface IY. 
	virtual void __stdcall Fy1() {cout << "CA::Fy1" << endl ;} 
	virtual void __stdcall Fy2() {cout << "CA::Fy2" << endl ;} 
 
} ; 
 
 
// Client 
int main() 
{ 
	trace("Client: Create an instance of the component.") ; 
	CA* pA = new CA ; 
 
	// Get an IX pointer. 
	IX* pIX = pA ; 
 
	trace("Client: Use the IX interface.") ; 
	pIX->Fx1() ; 
	pIX->Fx2() ; 
 
	// Get an IY pointer. 
	IY* pIY = pA ; 
 
	trace("Client: Use the IY interface.") ; 
	pIY->Fy1() ; 
	pIY->Fy2() ; 
 
	trace("Client: Delete the component.") ; 
	delete pA ; 
 
	return 0 ; 
}