クラスメンバーの一部を公開する必要がある場合があります。たとえば、次の例では、コンポーネントへのclass Mechanic
直接アクセスが必要になる場合がありEngine
ます。いくつかの理由から、すべてのフィールドにミューテーター (アクセサー) メソッドでアクセスする必要があることを何度も読みました。しかし、非 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;
}
エンジンコンポーネントを公開するだけではありません:
class Car
{
public:
Engine engine;
}
この例が気に入らない場合は、public
に置き換えることもできます。protected
実生活では、System.in
またはに関しては Java に似たものがありますSystem.out
。一部の人々の言うことに完全に準拠するには、 のような呼び出しを実行する必要があるようSystem.getInstance().getOut().println("hello world")
です。そのような場合、多くの官僚的なコードを除いて、何のメリットもありません。