class A
{
};

class B : public A
{

};

というのがあり、

A* boo(A* obj);

という関数なら、クラスAクラスBのどちらのオブジェクトもとれるのは分かるのですが、

A& boo(A& obj);

なら、Aしか引数,戻り値にすることはできませんか?