¿Hay alguna ventaja de utilizar private
funciones (probablemente también static
) en una clase de funciones de utilidad utilizados en mi clase que no necesitan acceso a los datos de una instancia sobre el uso de static
funciones globales en mi .cpp
archivo que implementa la clase?
El primero me parece más limpio, pero el segundo realmente tiene más sentido ya que estas funciones ni siquiera necesitan mencionarse en el archivo .h
.vs. funciones estáticas privadas en C++
Respuesta
No voy a poner estática privada funciones para el archivo de encabezado si no son necesarios. Solo contaminarían el archivo de encabezado y agregarían más trabajo.
Pero es posible que se necesiten funciones estáticas privadas cuando se tiene un método/función de plantilla en una clase y se quiere usar esa función de ayuda en ella.
Otra razón para usar funciones estáticas privadas en lugar de funciones estáticas globales es que pueden acceder a miembros privados de la clase (variables, funciones).
Si una función dada se relaciona con su class
, entonces tiene razón. Debe hacerlos private static
dentro de su cuerpo class
.
[Nota: Si aquellos función de utilidad no se refiere en absoluto a continuación, se puede pensar en encerrándolos en una u otra clase namespace
Util y mantenerlo dentro del alcance del archivo.]
se puede relacionar con la implementación de clase , no la interfaz de clase, como en la mayoría de los casos. en este caso no hay necesidad de contaminar la interfaz de clase –
Simplemente haga que sean funciones fijas de archivos. Si no tienen nada que ver con la clase, no los pongas allí.
Recomendaría la función de espacio de nombre sin nombre en lugar del archivo estático –
Soy consciente de que "C++ moderno" recomienda usar funciones en espacios de nombres sin nombre, pero no veo ninguna ventaja técnica. De hecho, podría ser una desventaja ya que tal función tiene un enlace externo y puede ralentizar el enlace. – zvrba
http://stackoverflow.com/questions/154469/unnamed-anonymous-namespaces-vs-static-functions –
Si la función privada no modifica los miembros de la clase, no tiene ninguna ventaja sobre la estática global. Estar dentro o fuera de la clase no hace ninguna diferencia
- 1. Funciones estáticas privadas en javascript
- 2. funciones estáticas vs funciones const
- 3. C++ - Espacio de nombres vs. funciones estáticas
- 4. Funciones privadas en JavaScript
- 5. funciones de plantillas privadas
- 6. C++: funciones virtuales privadas, frente a las funciones virtuales puras
- 7. Funciones privadas abstractas
- 8. Diferencia entre variables estáticas públicas y privadas estáticas
- 9. prototipos para funciones "estáticas"
- 10. Razones para utilizar las funciones estáticas y variables en C
- 11. Funciones de clases privadas vs Funciones en el espacio de nombre sin nombre
- 12. Anulación de las funciones virtuales públicas con funciones privadas en C++
- 13. Funciones privadas y variables ExtJs4?
- 14. Operadores vs Funciones en C/C++
- 15. C++ Funciones de miembros vs funciones gratuitas
- 16. Prueba de funciones privadas en javascript
- 17. C++, static vs. namespace vs. singleton
- 18. Funciones no miembro no miembro frente a funciones privadas
- 19. C++ Estructuras Privadas
- 20. Constructores PHP y funciones estáticas
- 21. Matrices estáticas VS. matrices dinámicas en C++ 11
- 22. ¿Cuándo uso variables/funciones estáticas en php?
- 23. funciones de plantilla estáticas en una clase
- 24. Función estática que conduce a funciones más estáticas
- 25. EUnit no puede probar las funciones privadas
- 26. Una pregunta sobre C# y las clases y funciones estáticas
- 27. ¿Las funciones estáticas C# funcionan mejor que las funciones no estáticas, más allá del uso reducido de la memoria?
- 28. clases privadas en Objective C
- 29. Variables estáticas en C#
- 30. importaciones estáticas en C#
Relacionado: http://stackoverflow.com/questions/2739146/c-oop-which-functions-to-put-into-the-class –