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.