Replacement functions
Ciertas funciones para las cuales la implementación suministra una definición son reemplazables . Un programa C++ puede proporcionar una definición con la firma de una función reemplazable, llamada función de reemplazo . La función de reemplazo, si se proporciona, se utiliza en lugar de la versión predeterminada suministrada por la implementación. Dicho reemplazo ocurre antes del inicio del programa.
Si una declaración de la función de reemplazo no satisface alguna de las siguientes condiciones, el programa está mal formado, no se requiere diagnóstico:
- No es inline .
- Está attached al módulo global.
- Tiene language linkage de C++.
- Tiene el mismo tipo de retorno que la función reemplazable.
- Si la función reemplazable está declarada en un standard library header , sería válida como una redeclaración de la declaración en ese encabezado.
Lenguaje del núcleoEstá definido por la implementación si el manejador de violación de contrato :: handle_contract_violation es reemplazable. |
(desde C++26) |
Biblioteca estándar
Las siguientes funciones de la biblioteca estándar son reemplazables, y la descripción de la semántica de la función se aplica tanto a la versión predeterminada definida por la biblioteca estándar de C++ como a la función de reemplazo definida por el programa:
|
funciones de asignación
(función) |
|
|
funciones de liberación
(función) |
|
|
(C++26)
|
verifica si un programa se está ejecutando bajo el control de un depurador
(función) |
Ejemplo
Utiliza una función de asignación de reemplazo:
#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 }
Salida:
Replaced!