La pregunta ¿Dónde debería poner funciones que no están relacionadas con una clase ha provocado cierto debate sobre si tiene sentido en C ++ combinar funciones de utilidad en una clase o simplemente hacer que existan como funciones libres en un espacio de nombres?
Vengo de un fondo de C # donde la última opción no existe y, por lo tanto, naturalmente tiendo a usar clases estáticas en el pequeño código de C ++ que escribo. La respuesta más votada sobre esa pregunta, así como varios comentarios, dicen que las funciones libres son preferibles, incluso sugiriendo que las clases estáticas eran un antipatrón. ¿Por qué es así en C ++? Al menos en la superficie, los métodos estáticos en una clase parecen indistinguibles de las funciones libres en un espacio de nombres. ¿Por qué así la preferencia por este último?
¿Serían diferentes las cosas si la colección de funciones de utilidad necesitara datos compartidos, por ejemplo, un caché que uno pudiera almacenar en un campo estático privado?
fuente