2012-03-09 19 views
7

¿En qué se diferencian los dispositivos de acceso y los mutadores? Un ejemplo y una explicación serían geniales.¿Cuál es la diferencia entre los métodos de acceso y mutador?

+0

Los métodos de acceso (o getter) le permiten acceder a los miembros de una estructura de datos, mientras que los métodos de Mutator (o setter) le permiten cambiar los valores de una estructura de datos. – Chad

Respuesta

14

Un de acceso es un método de clase usado para leer miembros de datos, mientras que un mutador es un método de clase usado para cambio miembros de datos.

He aquí un ejemplo:

class MyBar; 

class Foo 
{ 
    public: 
     MyBar GetMyBar() const { return mMyBar; } // accessor 
     void SetMyBar(MyBar aMyBar) { mMyBar = aMyBar; } // mutator 

    private: 
     MyBar mMyBar; 
} 

Es la mejor práctica para que los miembros de datos private (como en el ejemplo anterior) y sólo acceder a ellos a través de descriptores de acceso y mutadores. Esto es por las siguientes razones:

  • Usted sabe cuándo se accede a ellas (y puede depurar esto a través de un punto de interrupción).
  • El mutador puede validar la entrada para asegurarse de que se ajusta dentro de ciertas restricciones.
  • Si necesita cambiar la implementación interna, puede hacerlo sin romper un montón de código externo; en su lugar, simplemente modifique la forma en que los accesors/mutators hacen referencia a los datos internos.
3
class foo 
{ 
    private: 

     int a; 
    public: 
     int accessA() const { return(a);} 
     void mutateA(const int A) { a = A;} 
} 

También conocidos como getters y setters y probablemente una docena de otros términos.

+2

Su acceso debe ser const! :) –

+2

@Wesley Petrowski - bastante bien, pero ¿no deberían todos los demás también? – Duck

+0

Eso, señor, fue bueno. Por supuesto que deberían;) – chris

Cuestiones relacionadas