REVIEW - Microsoft Visual C++ 5


Microsoft Visual C++ 5


Steven Holzner



Sybex (1997)




Francis Glassborow


December 1998



This is the kind of book that endangers my health. I have certain minimum requirements for any book that purports to teach C++. This book fails them. I do not have time to analyse the quality of Windows specific code. I find it difficult to read at the best of times. Indeed it is the quality of much of this code that gives C++ such a bad name. I assume from the prevalence of upper case identifiers that Microsoft wizards and libraries rely heavily on the pre-processor. As such use is the antithesis of good style in C++ we can lay the blame for this where it belongs.

However one consequence of the poor example that MFC sets is that we have authors writing chapters aiming to give the reader a grasp of C++ (though how you can expect to do this in 42 pages defeats me) that include such a multitude of flaws that I have not space to enumerate them. However, just as an example, the author defines a class

with two data members:
int *ClassData
int ClassDataIndex
. The former is initialised (in the body of the constructor) to a dynamic array and the latter is initialised to zero. What tracks the size of the array? Different member functions change
. At least one uses it to limit the execution of a loop. Another increments it (much of the problem of global data in a microcosm). The destructor uses the wrong
. There is no declaration of a copy constructor nor of a copy assignment.

I would not employ a programmer who wrote such poor C++, and I would not encourage you to read books from authors whose basic C++ source code is so poor. A professional in any area must be able to get the fundamentals right.

Maybe the rest of the book is an excellent exposition of using Visual C++ 5 to produce Windows applications, but that is like expecting palaces built on foundations of sand. Even Herbert Schildt at his worst writes better code than this.

Book cover image courtesy of Open Library.

Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED

By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED

Settings can be changed at any time from the Cookie Policy page.