Orthogonal persistence, the property that any object can be made to persist independent of its type, is an important requirement of a persistent language. In this article we present a new technique called forced inheritance for providing orthogonal persistence to C++. This method achieves both orthogonal persistence and portability, which could not be provided at the same time by previous methods. In this technique, properties that make objects persist are attached as a header to an object or a value of any type that should persist. Attaching the header gives the effect of inheriting these properties from a virtual persistent root class regardless of its type. This technique provides orthogonal persistence because any object can have a header attached to it. It also provides portability because it does not extend the language. Finally, we have developed an object-oriented database system prototype using forced inheritance and proved the feasibility and effectiveness of the method.