In C++, variables hold objects, not references as in Java and many other object-oriented languages. This means that assigning or passing objects (other than by reference) means the object itself must be copied. It turns out that that is more complicated than it sounds. In this section, we use several implementations of a simple abstraction to to explore the issues.