共用方式為


_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。如需詳細資訊,請參閱平台叫用範例

請參閱

參考

錯誤處理 (CRT)

_purecall