この記事の著者は次のように述べています。
「通常、あまりにも多くの他のクラスの内部にアクセスしたくはありません。プライベート継承は、この余分な力 (および責任) の一部を提供します。しかし、プライベート継承は悪ではありません。維持するのにコストがかかるだけです。誰かが何かを変更してあなたのコードを壊す可能性が高くなります。」
privatelyCar
から継承する次のコードを想定します。Engine
#include <iostream>
using namespace std;
class Engine
{
int numCylinders;
public:
class exception{};
Engine(int i) { if( i < 4 ) throw exception(); numCylinders = i; }
void start() { cout << "Engine started " << numCylinders << " cylinders" << endl; }
};
class Car : private Engine
{
public:
Car(int i) : Engine(i) {}
using Engine::start;
};
int main()
{
try
{
Car c(4);
c.start();
}
catch( Engine::exception& )
{
cout << "A Car cannot have less than 4 cylinders" << endl;
}
}
私の質問は次のとおりです。Car
たとえば、Engine
4 シリンダー未満で、プライベート継承を使用し、基本クラスで保護されたメンバーを使用せずに、このコードをどのように壊すことができますか?