TweetFollow Us on Twitter

Cplusplus Programming Volume Number: 16 (2000)
Issue Number: 12
Column Tag: Programmer's Bookshelf

The C++ Programming Language

By Paul E. Sevinç, Switzerland

Third Edition and Special Edition

A couple of months ago, Addison-Wesley published a special edition of the third edition of Bjarne Stroustrup's The C++ Programming Language [1, 2]. The special edition features two new appendices that my copy of the third edition (9th printing) does not contain. However, both appendices are freely available from Bjarne Stroustrup's home page [3]. And except for minor differences that exist between any two printings (cf. erratas [3]), the contents of both editions are identical.

The book teaches Standard C++ and the C++ Standard Library, and discusses programming techniques supported by C++. In my experience, it also serves well as a reference manual.

The four main parts of the book—Basic Facilities, Abstraction Mechanisms, The Standard Library, and Design Using C++ — are preceded by an introductory part, Introductory Material. All the chapters contain a section called Advice where in other books one would find a summary. With the exception of the first two chapters of the last part, all the chapters in the main parts end with exercise sections.

The advice sections just contain a list of tips (a few up to two dozen). Examples are "Use 0 rather than NULL" [1, p. 104] or "Avoid type fields" [1, p. 324]. Taken out of context, they appear to be trivial at best, but I find them to be quite valuable both while learning C++ and in practice.

Introductory Material

The introduction consists of three chapters.

The first chapter is mostly non-technical and gives an overview of the book, recaps C++'s history, etc. Even though it gives the impression of being unimportant, I highly recommend to carefully read this chapter. It contains very interesting background material on C++.

The second and third chapter give an overview of the language and the standard library, respectively. What is quickly explained in these two chapters is explained in (much) more detail in later chapters. Readers new to C++ will most certainly not understand everything, but that is not necessary. However, who thinks of herself or himself as a C++ programmer can use these chapters as a refresher course on the one hand and as a fitness test on the other hand.

Basic Facilities

The six chapters of part I describe the language constructs that support procedural and modular programming. These two paradigms are briefly explained in chapter 2 only. Therefore, the reader shoud at least be familiar with procedural programming and the principle of information hiding.

Chapter 4 presents the built-in types as well as enumerations, declarations, and synonyms for types (typedefs). Chapter 5 treats pointers and references, arrays, and structures (records). Chapter 6 discusses expressions, statements, and comments. Chapter 7 focuses on functions, but contains some information on macros as well. Chapter 8 shows how C++ programs can be modularized with the help of namespaces and introduces exception handling. Chapter 9, finally, is about organizing C++ programs into files.

All the chapters are rather terse with mostly tiny code examples. (A notable exception is the desk-calculator example in the first section of the sixth chapter.) Since the objective is to introduce language features, and not to teach how to program, I do not think that this is a problem. On the contrary, readers familiar with C-like syntax will appreciate Stroustrup's style of quickly getting to the point. Others should not have any problems, either, even though they might need to read a section more than once in order to familiarize with the C++ syntax.

Abstraction Mechanisms

The six chapters of part II describe the language constructs that support abstract data types (ADTs), object-oriented programming (OOP), and generic programming.

Chapter 10 explains how ADTs can be defined that in their "look-and-feel" do not differ from built-in types. Chapter 11 complements chapter 10 by introducing operator overloading as well as friend functions and conversion operators. Both chapters lay the foundation of the rest of the book, in particular of chapters 12 and 15 that treat C++'s support for OOP and also introduce the OOP vocabulary. Chapter 13 and chapter 14 cover templates and exception handling, respectively.

These chapters are less terse, and the code examples are bigger as well. Readers with experience in OOP will again be happy with the pace. However, I am afraid that many OOP novices will need to look for a more gentle introduction to OOP.

The Standard Library

The seven chapters of part III present the standard library. Unlike the other four parts, I have not re-read this part for this review. (I have read the book [albeit the 1st printing] in its entirety about three years ago and have used it as a reference manual since then.)

But I remember that I had no difficulty to understand the organization and semantics of the library. Furthermore, whenever I look for a certain stream or container, I quickly find it and am able to put it to good use in my code.

Design Using C++

The three chapters of part IV, Development and Design, Design and Programming, and Roles of Classes, round off the book.

This part cannot be a replacement for a good software-engineering book on, for instance, modeling, patterns, or component orientation. Nevertheless, Stroustrup's unique relation to C++ and his many years of experience as a software developer provided him with more than enough valuable material and insights to share with the readers. In my opinion, junior developers will profit most from this part, but it is definitely of interest to senior developers as well.

Conclusion

In the course of the last five years, I have read quite a few books in the field of computer science & engineering. Naturally, I encountered bad, good, and also some very good ones.

Bjarne Stroustrup's The C++ Programming Language is one of those very good books. It is crammed with useful information; to such an extent that — at least in the beginning — one learns more about programming in general and about C++ in particular every time one re-reads a section or a chapter.

To cut a long story short, The C++ Programming Language is not only a must-read, it is a must-have for every serious C++ programmer.

References

  • [1] B. Stroustrup. The C++ Programming Language. Addison-Wesley, Reading (Massachusetts), 3rd edition 1997.
  • [2] B. Stroustrup. The C++ Programming Language. Addison-Wesley, Reading (Massachusetts), special edition 2000.
  • [3] B. Stroustrup. Bjarne Stroustrup. Home Page
    Located at <http://www.research.att.com/~bs/>.

Paul E. Sevinç became the 43rd president of the United States after Florida wasn't able to make up its mind. You can reach him at paul.sevinc@ubilab.org.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Tunnelblick 3.8.2a - GUI for OpenVPN.
Tunnelblick is a free, open source graphic user interface for OpenVPN on OS X. It provides easy control of OpenVPN client and/or server connections. It comes as a ready-to-use application with all... Read more
calibre 4.17.0 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
MacPilot 11.1.4 - $15.96
MacPilot gives you the power of UNIX and the simplicity of Macintosh, which means a phenomenal amount of untapped power in your hands! Use MacPilot to unlock over 1,200 features, and access them all... Read more
Transmission 3.00 - Popular BitTorrent c...
Transmission is a fast, easy, and free multi-platform BitTorrent client. Transmission sets initial preferences so things "just work", while advanced features like watch directories, bad peer blocking... Read more
Doom 3 1.3.1 - First-person shooter acti...
A massive demonic invasion has overwhelmed the Union Aerospace Corporation's (UAC) Mars Research Facility, leaving only chaos and horror in its wake. As one of only a few survivors, you must fight... Read more
Box Sync 4.0.8004 - Online synchronizati...
Box Sync gives you a hard-drive in the Cloud for online storage. Note: You must first sign up to use Box. What if the files you need are on your laptop -- but you're on the road with your iPhone? No... Read more
LibreOffice 6.4.4.2 - Free, open-source...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
Day One 4.14 - Maintain a daily journal.
Day One is an easy, great-looking way to use a journal / diary / text-logging application. Day One is well designed and extremely focused to encourage you to write more through quick Menu Bar entry,... Read more
MenuMeters 2.0.7 - CPU, memory, disk, an...
MenuMeters is a set of CPU, memory, disk, and network monitoring tools for Mac OS X. Although there are numerous other programs which do the same thing, none had quite the feature set I was looking... Read more
War Thunder 1.97.2.19 - Multiplayer war...
In War Thunder, aircraft, attack helicopters, ground forces and naval ships collaborate in realistic competitive battles. You can choose from over 1,500 vehicles and an extensive variety of combat... Read more

Latest Forum Discussions

See All

SINoALICE, Yoko Taro and Pokelabo's...
Yoko Taro and developer Pokelabo's SINoALICE has now opened for pre-registration over on the App Store. It's already amassed 1.5 million Android pre-registrations, and it's currently slated to launch on July 1st. [Read more] | Read more »
Masketeers: Idle Has Fallen's lates...
Masketeers: Idle Has Fallen is the latest endeavour from Appxplore, the folks behind Crab War, Thor: War of Tapnarok and Light A Way. It's an idle RPG that's currently available for Android in Early Access and will head to iOS at a later date. [... | Read more »
Evil Hunter Tycoon celebrates 2 million...
Evil Hunter Tycoon has proved to be quite the hit since launching back in March, with its most recent milestone being 2 million downloads. To celebrate the achievement, developer Super Planet has released a new updated called Darkness' Front Yard... | Read more »
Peak's Edge is an intriguing roguel...
Peak's Edge is an upcoming roguelike puzzle game from developer Kenny Sun that's heading for both iOS and Android on June 4th as a free-to-play title. It will see players rolling a pyramid shape through a variety of different levels. [Read more] | Read more »
Clash Royale: The Road to Legendary Aren...
Supercell recently celebrated its 10th anniversary and their best title, Clash Royale, is as good as it's ever been. Even for lapsed players, returning to the game is as easy as can be. If you want to join us in picking the game back up, we've put... | Read more »
The Magic Gladiator class arrives in MU...
The Magic Gladiator class is now available in MU Origin 2 following the most recent patch. It also marks the start of Abyss Season 11 and the introduction of Couple Skills and Couple Dungeons. [Read more] | Read more »
The 5 Best Racing Games
With KartRider Rush+ making a splash this past week, we figured it was high time we updated our list of the best mobile racing games out there. From realistic racing sims to futuristic arcade racers (and even racing management games!), check out... | Read more »
KartRider Rush+ Guide - Tips for new rac...
KartRider Rush+ continues to be a surprisingly refreshing and fun kart racer that's entirely free-to-play. The main reason for this is just how high its skill ceiling is. Check out the video above if you're curious to know what top level play looks... | Read more »
KartRider Rush+ might be good, actually?
It's hard to find good racing games on mobile. Most of them are free-to-play, and free-to-play racers generally suck. Even Nintendo couldn't put together a competent Mario Kart game, opting instead for a weird score chaser that resembles--but feels... | Read more »
LifeAfter, NetEase's popular surviv...
A new map will be making its way into NetEase's popular survival game LifeAfter. The map is set to arrive on May 28th and will introduce a volcano that's teetering on the verge of eruption, bringing a host of added challenges to the game. [Read... | Read more »

Price Scanner via MacPrices.net

Apple restocks 2019 MacBook Airs starting at...
Apple has clearance, Certified Refurbished, 2019 13″ MacBook Airs available again starting at $779. Each MacBook features a new outer case, comes with a standard Apple one-year warranty, and is... Read more
Apple restocks clearance Mac minis for only $...
Apple has restocked Certified Refurbished 2018 4-Core Mac minis for only $599. Each mini comes with a new outer case plus a standard Apple one-year warranty. Shipping is free: – 3.6GHz Quad-Core... Read more
Apple’s new 2020 13″ MacBook Airs on sale for...
B&H Photo has Apple’s new 2020 13″ 4-Core and 6-Core MacBook Airs on sale today for $50-$100 off Apple’s MSRP, starting at $949. Expedited shipping is free to many addresses in the US. The... Read more
B&H continues to offer clearance 2019 13″...
B&H Photo has clearance 2019 13″ 4-Core MacBook Pros available for up to $300 off Apple’s original MSRP, with prices starting at $1149. Expedited shipping is free to many addresses in the US. B... Read more
Memorial Day Weekend Sale: Take $300 off thes...
Apple resellers are offering $300 discounts on select 16″ MacBook Pros as part of their Memorial Day Weekend 2020 sales. Prices start at $2099: – 16″ 2.6GHz 6-Core Space Gray MacBook Pro: $2099 at... Read more
Best Memorial Day Weekend 2020 Apple AirPods...
Apple resellers are offering discounts ranging up to $50 off MSRP on AirPods as part of their Memorial Day Weekend 2020 sales. These are the best deals today on various AirPods models. See our... Read more
Memorial Day Weekend Sale: 10″ Apple iPads fo...
Amazon is offering new 10.2″ iPads for $80-$100 off Apple’s MSRP as part of their Memorial Day Weekend 2020 sale, with prices starting at only $249. These are the same iPads sold by Apple in their... Read more
Memorial Day Weekend Sale: 2020 Apple iPhone...
Sprint is offering Apple’s new 2020 64GB iPhone SE for $0 per month for 18 months as part of their Memorial Day Weekend 2020 sale. New line of service and trade-in required. Offer is valid from 5/22/... Read more
Amazon’s popular $100 Apple Watch Series 5 di...
Amazon has Apple Watch Series 5 GPS + Cellular models on sale for up to $100 off Apple’s MSRP today. Shipping is free. These are the same Apple Watch models sold by Apple in their retail and online... Read more
2020 13″ 4-Core MacBook Air on sale for $949,...
Apple reseller Adorama has the new 2020 13″ 1.1GHz 4-Core Space Gray MacBook Air on sale today for $949 shipped. Their price is $50 off Apple’s MSRP, and it’s the lowest price currently available for... Read more

Jobs Board

Essbase Developer - *Apple* - Theorem, LLC...
Job Summary Apple is seeking an experienced, detail-minded Essbase developer to join our worldwide business development and strategy team. If you are someone who Read more
Senior Software Engineer @ *Apple* - Theore...
Job Summary Apple is looking for a seasoned senior software engineer to join our worldwide business development and strategy team. This is an opportunity to lead a Read more
Cub Foods - *Apple* Valley - Now Hiring Par...
Cub Foods - Apple Valley - Now Hiring Part Time! United States of America, Minnesota, Apple Valley Retail Operations Post Date May 18, 2020 Requisition # 119230 Read more
Senior Practice Manager - *Apple* Hill Eye...
Senior Practice Manager - Apple Hill Eye Center Tracking Code 61713 Job Description Schedule & Location: Full Time Days Apple Hill Medical Center General Read more
Retail Sales Consultant - *Apple* Valley -...
Retail Sales Consultant - Apple Valley - $500 Hiring Bonus Apply Now...12-30-2019 Address : 7875 150th St W Location : Apple Valley, MN US Req # : 272753BR Job Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.