Faz sentido fornecer um buscador de referência não-const

Às vezes, preciso expor alguns dos alunos. Por exemplo, no exemplo a seguirclass Mechanic pode precisar de acesso direto aEngine componente. Eu já li muitas vezes que todos os campos devem ser acessados por métodos mutator (acessador) por vários motivos. Mas há alguma vantagem ao fornecer um getter de referência não-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;
}

simplesmente tornando público o componente do mecanismo:

class Car
{
    public:
        Engine engine;
}

Você também pode substituirpublic comprotected se você não gostar deste exemplo. Na vida real, você tem algo semelhante em Java quando se trata deSystem.in ouSystem.out. Parece que, para ser totalmente compatível com o que algumas pessoas dizem, você precisaria realizar chamadas comoSystem.getInstance().getOut().println("hello world"). Não vejo nenhum benefício, exceto um monte de código burocrático nesses casos.

questionAnswers(9)

yourAnswerToTheQuestion