_set_purecall_handler
設定純虛擬函式呼叫的處理常式。
_purecall_handler _set_purecall_handler( _purecall_handler function );
參數
- function
呼叫純虛擬函式時要呼叫的函式。 _purecall_handler 函式必須具有 void 傳回類型。
傳回值
上一個 _purecall_handler。 若無上一個處理常式,則傳回 NULL。
備註
若您想要擷取純虛擬函式,請使用 _set_purecall_handler,並以特定方式將純虛擬函式報告給使用者,或將純虛擬函式擷取起來以供偵錯使用。
因為整個處理序有一個 _purecall_handler,所以呼叫此函式會立即影響所有執行緒。 任何執行緒的上一個呼叫端會設定處理常式。
所有以動態方式連結的 DLL 或可執行檔都有一個單一 _set_purecall_handler 處理常式;即使您呼叫 _set_purecall_handler,也可能會以其他處理常式取代您的處理常式,否則您要以其他 DLL 或可執行檔取代處理常式設定。
若要還原預設行為,請搭配 NULL 引數呼叫 _set_purecall_handler。
需求
常式 |
必要的標頭 |
---|---|
_set_purecall_handler |
<stdlib.h> |
如需相容性詳細資訊,請參閱<簡介>中的相容性。
範例
// _set_purecall_handler.cpp
// compile with: /W1
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
class CDerived;
class CBase
{
public:
CBase(CDerived *derived): m_pDerived(derived) {};
~CBase();
virtual void function(void) = 0;
CDerived * m_pDerived;
};
class CDerived : public CBase
{
public:
CDerived() : CBase(this) {}; // C4355
virtual void function(void) {};
};
CBase::~CBase()
{
m_pDerived -> function();
}
void myPurecallHandler(void)
{
printf("In _purecall_handler.");
exit(0);
}
int _tmain(int argc, _TCHAR* argv[])
{
_set_purecall_handler(myPurecallHandler);
CDerived myDerived;
}
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。