14.7. Interface and Implementation
Listing 10.1 on page 415 implements a template container Stack class. This design uses the full class boilerplate to implement a “bounded” stack with value semantics (each Stack has a fixed length and stores copies of the data). When we design class libraries, we would like to offer other options for Stack objects as well. Some applications, for instance, may prefer an “unbounded” Stack with pointer semantics (each Stack stores pointers to data and can never be full).
There are many ways to implement a Stack container class. When you look at all the options, there are four distinct possibilities:
Bounded value semantics
Unbounded value semantics
Bounded pointer semantics
Unbounded pointer semantics
How should we ...