TITLE: Hiding information in classes PROBLEM: Often designers want to hide detailed internal information from clients of a class. This reduces intermodule dependencies. RESPONSE: Bjarne Stroustrup (bs@alice.att.com), 12 May 92 Often, but of course not always, when people have problems with too much information in header files the problem can be attacked by the use of abstract classes. For example: class interface { // pure virtual functions ~interface() {} }; This defines the interface, has no data members, and is defined somewhere like interface.h. The implementations are elsewhere: // my_implementation.h: class my_implementation : public interface { // definitions }; and // your_implementation.h: class your_implementation : public interface { // definitions }; A user need include interface.h only. People who are interested in a particular implementation, say because they want to create objects of that type, include the appropriate implementation headers also. See Chapter 13 of my 2nd edition for more details.