Using public inheritance with two classes that do not fully comply with the is-a relation (although they are related to one another) is a common design mistake. For example, deriving class Stack from class List may indicate a design flaw. A stack is not a list. Both classes support some common operations, yet using public inheritance is too strong a statement about the relationship between the two. Such improper inheritance relations can result in serious maintenance problems. In this case, private inheritance–or better yet, a simple containment relation–would be more suitable.