確かにこんな事するぐらいなら、class Aのインターフェースをもう少し改良
して所有させればいいように思う。それから A* ap = &b; とできないので、
ポリモーフィックな動作をさせられないのは意外だった。

##include <iostream>
using namespace std;

class A {
protected:
int i;
A() { i = 111; }
virtual void print() const { cout << i << endl; }
};

class B : private A {
int j;
public:
B() : A() { j = 222; }
void print() const { A::print(); cout << j << endl; }
};

int main()
{
B b;
b.print();
}