¿Tiene sentido proporcionar un getter de referencia no constante

A veces necesito exponer a algunos de los miembros de la clase. Por ejemplo en el siguiente ejemploclass Mechanic puede necesitar acceso directo aEngine componente. He leído muchas veces que todos los campos deben ser accedidos por métodos mutadores (accesor) por varias razones. Pero, ¿hay alguna ventaja al proporcionar un getter de referencia no constante?

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 simplemente hacer público el componente del motor:

class Car
{
    public:
        Engine engine;
}

También puedes reemplazarpublic conprotected Si no te gusta este ejemplo. En la vida real, tienes algo similar en Java cuando se trata deSystem.in oSystem.out. Parece que, para cumplir totalmente con lo que dicen algunas personas, necesitaría realizar llamadas comoSystem.getInstance().getOut().println("hello world"). No veo ningún beneficio, excepto mucho código burocrático en tales casos.

Respuestas a la pregunta(9)

Su respuesta a la pregunta