A veces tengo que exponer algunos de los miembros de la clase. Por ejemplo, en el siguiente ejemplo, class Mechanic
puede necesitar acceso directo al componente Engine
. He leído muchas veces que se debe acceder a todos los campos mediante métodos de mutador (acceso) debido a varias razones. Pero ¿hay alguna ventaja en la prestación de captador de referencia no const:¿Tiene sentido proporcionar getter de referencia no const
class Car
{
public:
Engine & engine()
{
return m_engine;
}
//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}
private:
Engine m_engine;
}
sobre pública componente del motor simplemente haciendo:
class Car
{
public:
Engine engine;
}
También puede reemplazar con public
protected
si no te gusta este ejemplo. En la vida real tiene algo simillar en Java cuando se trata de System.in
o System.out
. Parece que, para ser totalmente compatible con lo que algunas personas dicen, necesitarías realizar llamadas como System.getInstance().getOut().println("hello world")
. No veo ningún beneficio excepto un montón de código burocrático en tales casos.
No hay votación cerrada, pero si el propósito de la pregunta es establecer una teoría y luego estar en desacuerdo con todas las respuestas contrarias a esa teoría, entonces es probable que sea "subjetiva y argumentativa". Si su teoría es correcta o incorrecta. –
@Steve Jessop: No seas tan celoso, ordena las preguntas por votos y obtendrás muchas inexactas (la pregunta no puede ser subjetiva, la respuesta puede ser). Cada respuesta es más o menos subjetiva. Como excusa de sus sospechas, estaba en un viaje y no he tenido la oportunidad de visitar Stackoverflow últimamente. – doc
es por eso que no estoy seguro. Si alguien realmente está pidiendo razones para algo, creo que está bien, aunque no haya una razón definitiva. Si alguien no cree que hay razones, pero de todos modos pregunta por qué, creo que "generalmente conduce a la confrontación y la discusión". No se produce ningún daño grave de ninguna manera, pero este no es el propósito del sitio AFAIK. –