Operador de sobrecarga para pre y post incremento
Esta consulta profundiza en la viabilidad de sobrecargar el operador para facilitar tanto el preincremento como el post- operaciones incrementales. En el incremento previo (SampleObject), el objeto se incrementa antes de que se devuelva su valor. El incremento posterior (SampleObject) incrementa el objeto y devuelve su valor original.
La implementación de estas operaciones mediante la sobrecarga de operadores requiere comprender las limitaciones de los tipos de devolución. Si bien la sobrecarga basada en tipos de devolución puede parecer permisible, plantea un problema de ambigüedad. La sobrecarga de operadores extiende la funcionalidad de los tipos integrados a tipos definidos por el usuario. Sin embargo, no está claro por qué el incremento previo y posterior no pueden coexistir para los tipos definidos por el usuario.
Para resolver esta ambigüedad, el operador de incremento postfix utiliza un parámetro int ficticio:
// Prefix
Sample& operator ()
{
// Increment logic on this instance; return reference to it.
return *this;
}
// Postfix
Sample operator (int)
{
Sample tmp(*this);
operator (); // Prefix-increment this instance
return tmp; // Return value before increment
}
Con este enfoque, el operador de incremento previo devuelve una referencia al objeto incrementado, mientras que el operador de incremento posterior devuelve una copia del objeto antes de la operación de incremento.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3