替换函数
来自cppreference.com
特定函数的实现由实现提供,这些函数是可替换函数。C++ 程序可以提供具有可替换函数的签名的定义,它被称为替换函数。使用可替换函数时会用替换函数(如果有提供)替换由实现提供的默认版本。此类替换会在程序启动前发生。
如果替换函数的声明不满足以下任意条件,那么程序非良构,不要求诊断:
核心语言由实现定义约定违背处理函数 ::handle_contract_violation 是否可替换。 |
(C++26 起) |
[编辑] 标准库
以下标准库函数均可替换,并且对函数语义的描述同时适用于 C++ 标准库定义的默认版本和程序定义的替换函数:
分配函数 (函数) | |
解分配函数 (函数) | |
(C++26) |
检查程序是否在调试器的控制下运行 (函数) |
[编辑] 示例
使用替换分配函数:
运行此代码
#include <cstddef> #include <new> #include <print> // 替换函数 void* operator new(std::size_t count) { std::print("已替换!"); return nullptr; } int main() { int* ptr = new int; // 调用程序定义的替换版本 }
输出:
已替换!