[net.lang.c] C++ modules

bs@alice.UUCP (Bjarne Stroustrup) (05/15/85)

C++ design concentrates on facilities for defining new types, but it does
provide features that support a "module concept":

	(1) An interface can be defined as a .h file containing a set of
declarations (of constants, user-defined types, functions, and variables).
	(2) The implementation (definition) of the functions, the definition of
the variables (if any, data is often better left local to a module), and of
operations on objects of the user-defined types are then placed in (one or more)
.c files.

There can of course be several different interfaces (.h files) for the same
implementation.

This looks very much like the "files as modules" idea for C, but there are two
significant differences:
	(1) In C++ names are not implicitly exported from or imported
into .c files, so the interface provided by the .h file can be kept honest
and consistent with the .c files providing the implementation and the .c files
using it.
	(2) In C++ one can specify arbitrary code to be executed for
initialization and cleanup of a module. (This is done using constructors and
destructors for static objects - this feature is not yet on the university
distribution tape, but it soon will be).