Well, theres standard meanings for inheritance and polymorphism. Inheriting an object from another object is commonly said to give the object inheriting an "is a" relationship with the base class, like the classic example:
Code:
class Shape {
public:
virtual std::string getName() = 0;
virtual unsigned int getLength() = 0;
};
// Sqaure
class Square : public Shape
{
public:
std::string getName() { return "Square"; }
unsigned int getLength() { return 100; }
};
As for having to do it the way you mentioned, no one ever said that. I'm currently using private inheritance in my Gameboy emulator as an alternative to creating an instance of every object inside the CPU class. Private inheritance is used to dictate an "is implemented in terms of" relationship. Just experiment and find a method you like really, theres a bazillion different ways to write an emulator.