By the end of this chapter we will have
Created an extended version of the standard string class that allows case-insensitive searching and comparison;
Learned how to use include guards to prevent a class interface from accidentally being defined more than once;
Learned more about the hazards of the “magic” value 0, as well as how we can prevent one of them that can occur when using the standard string class;
Learned how to restrict the application of a constructor via the explicit keyword.
Discovered just how difficult it is to anticipate how a program will be used and how many bugs it may contain;
Seen how a seemingly simple request for an added feature in a program can be extremely difficult to fulfill.