programas funciones ejemplos dev completo comandos codigos basicos c++ function methods

ejemplos - funciones en c++ pdf



Funciones de miembros de C++ frente a funciones gratuitas (3)

Me sigo confundiendo sobre esta decisión de diseño muchas veces cuando estoy escribiendo programas, pero no estoy 100% seguro de cuándo debería hacer una función para ser una función miembro de una clase, cuándo dejarla como una función normal en la que otros archivos fuente pueden llamar a la función cuando la declaración de la función se expone en un archivo de encabezado. ¿El acceso deseado a las variables miembro de una clase tiene que ver con la decisión la mayor parte del tiempo?


Si algo necesita acceder a las variables miembro o algún aspecto de una instancia del objeto, entonces se debe convertir en un método.

Si está estrechamente relacionado con la clase, pero no necesita acceder a ninguna información específica de la instancia, entonces debe ser una función compartida (o función de clase, o función estática dependiendo de qué lenguaje de programación se trate).

Incluso si solo se trata de una función genérica, es probable que tenga más de uno de ellos y que se pueda agregar / organizar de acuerdo con algún concepto. Luego, puede crear una clase que represente ese concepto y hacer que sean funciones compartidas.

Dado lo anterior, nunca más veo razones para crear funciones independientes.


Uso clases cuando necesito mantener el estado. Si una función no necesita acceso a información de estado mantenida, entonces prefiero una función gratuita porque facilita la prueba y la reutilización de código.

Si tengo un montón de funcionalidades relacionadas pero no necesito mantener el estado, entonces prefiero poner funciones gratuitas en un espacio de nombres.


El principio de interfaz de Herb Sutter

Para una clase X, todas las funciones, incluidas las funciones gratuitas, que ambas
(a) "mencionar" X, y
(b) están "provistos con" X
son lógicamente parte de X, porque forman parte de la interfaz de X.

Para una discusión en profundidad, lea Espacios de nombres y el Principio de interfaz de Herb Sutter.

EDITAR
En realidad, si quieres entender C ++ lee y lee todo lo que Herb Sutter ha escrito :)