c++ - todas - tipos de funciones en lenguaje c
¿Cuáles son las funciones de ayuda en C++? (4)
Estaba tratando de entender las funciones de ayuda en C ++ de The C++ Programming Language by Bjarne Stroustrup
. Pero el libro no ha explicado nada al respecto y el propósito de usarlo en las clases. Intenté buscarlo en la web y encontré this . Tengo una idea general, pero aún no estoy claro cuál es el verdadero propósito de las funciones de ayuda, cuándo debo usarlas y, en general, ¿cuáles son las funciones de ayuda?
Hay una gran definición de una función auxiliar desde CppCoreGuidline :
Una función auxiliar es una función (generalmente suministrada por el escritor de una clase) que no necesita acceso directo a la representación de la clase, aunque se considera parte de la interfaz útil de la clase. Colocarlos en el mismo espacio de nombres que la clase hace que su relación con la clase sea obvia y permite que se encuentren por búsqueda dependiente del argumento.
Para obtener más información, puede consultar el paragraph con un ejemplo claro, del cual se toma la cita superior.
Las "funciones de ayuda" se describen en el libro de Bjarne Stroustrups y ayer estaba leyendo sobre ellas. De acuerdo con Stroustrup, el buen diseño de una clase debe mantener el número de funciones que implementan una clase al mínimo. No quieres tener 50 funciones en una clase, según Stroustrup. En su lugar, utiliza "funciones de ayuda" que utilizan la interfaz de clase (llamar a las funciones miembro). Quizás podrían (no estar seguros de esto) estar definidos en un espacio de nombres compartido para dar significado a su "relación". Puede encontrar el párrafo en el libro en el capítulo 9, sección 9.7.5
Un ejemplo podría ser la función de validación de entrada que reutilizará en toda la función principal. Supongamos que tiene un programa que solicita la edad del usuario, ya que age es un entero> 0, deberá tener una función separada que se encargue de la "cin >> users_age;". Si la entrada cumple con la declaración de condición, continúe; de lo contrario, solicite al usuario que vuelva a ingresar su edad.
Este es solo un ejemplo de "función auxiliar". Corrígeme lectores si me equivoco. ¡Gracias!
"función auxiliar" no es un término que usted encontraría en un estándar, ni tiene una definición exacta ... el estándar menciona "clase auxiliar" o "plantilla auxiliar" varias veces para referirse a una clase, que no debe ser es una instancia de los usuarios finales, pero proporciona una funcionalidad útil que se utiliza internamente dentro de otra clase.
Las funciones de ayuda son (lo que creo que la mayoría de la gente quiere decir cuando lo dicen) generalmente funciones que envuelven algunas funciones útiles que se van a reutilizar, muy probablemente una y otra vez. Puede crear funciones de ayuda destinadas a ser utilizadas para diferentes tipos de propósitos ...
Un ejemplo podría ser una función de conversión de cualquier tipo, por ejemplo, la función que convierte multi-byte codificado std::string
a std::wstring
:
std::wstring s2ws(const std::string& str)
{
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo( size_needed, 0 );
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;
}