替換函式
來自 cppreference.com
某些由實現提供的函式定義是“可替換的”。C++ 程式可以提供一個具有可替換函式簽名的定義,稱為“替換函式”。如果提供了替換函式,它將代替實現提供的預設版本。此類替換髮生在程式啟動之前。
如果替換函式的宣告不滿足以下任何條件,則程式格式錯誤,不需要診斷:
核心語言是否可以替換契約違反處理程式 ::handle_contract_violation 是實現定義的。 |
(C++26 起) |
[編輯] 標準庫
以下標準庫函式是可替換的,函式語義的描述適用於 C++ 標準庫定義的預設版本和程式定義的替換函式。
分配函式 (函式) | |
釋放函式 (函式) | |
(C++26) |
檢查程式是否在偵錯程式控制下執行 (函式) |
[編輯] 示例
使用替換分配函式
執行此程式碼
#include <cstddef> #include <new> #include <print> // replacement function void* operator new(std::size_t count) { std::print("Replaced!"); return nullptr; } int main() { int* ptr = new int; // invokes the replacement version defined by the program }
輸出
Replaced!