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

Latest Forum Discussions

See All

Jump into one of Volkswagen's most...
We spoke about PUBG Mobile yesterday and their Esports development, so it is a little early to revisit them, but we have to because this is just too amusing. Someone needs to tell Krafton that PUBG Mobile is a massive title because out of all the... | Read more »
PUBG Mobile will be releasing more ways...
The emergence of Esports is perhaps one of the best things to happen in gaming. It shows our little hobby can be a serious thing, gets more people intrigued, and allows players to use their skills to earn money. And on that last point, PUBG Mobile... | Read more »
Genshin Impact 5.1 launches October 9th...
If you played version 5.0 of Genshin Impact, you would probably be a bit bummed by the lack of a Pyro version of the Traveller. Well, annoyingly HoYo has stopped short of officially announcing them in 5.1 outside a possible sighting in livestream... | Read more »
A Phoenix from the Ashes – The TouchArca...
Hello! We are still in a transitional phase of moving the podcast entirely to our Patreon, but in the meantime the only way we can get the show’s feed pushed out to where it needs to go is to post it to the website. However, the wheels are in motion... | Read more »
Race with the power of the gods as KartR...
I have mentioned it before, somewhere in the aether, but I love mythology. Primarily Norse, but I will take whatever you have. Recently KartRider Rush+ took on the Arthurian legends, a great piece of British mythology, and now they have moved on... | Read more »
Tackle some terrifying bosses in a new g...
Blue Archive has recently released its latest update, packed with quite an arsenal of content. Named Rowdy and Cheery, you will take part in an all-new game mode, recruit two new students, and follow the team's adventures in Hyakkiyako. [Read... | Read more »
Embrace a peaceful life in Middle-Earth...
The Lord of the Rings series shows us what happens to enterprising Hobbits such as Frodo, Bilbo, Sam, Merry and Pippin if they don’t stay in their lane and decide to leave the Shire. It looks bloody dangerous, which is why September 23rd is an... | Read more »
Athena Crisis launches on all platforms...
Athena Crisis is a game I have been following during its development, and not just because of its brilliant marketing genius of letting you play a level on the webpage. Well for me, and I assume many of you, the wait is over as Athena Crisis has... | Read more »
Victrix Pro BFG Tekken 8 Rage Art Editio...
For our last full controller review on TouchArcade, I’ve been using the Victrix Pro BFG Tekken 8 Rage Art Edition for PC and PlayStation across my Steam Deck, PS5, and PS4 Pro for over a month now. | Read more »
Matchday Champions celebrates early acce...
Since colossally shooting themselves in the foot with a bazooka and fumbling their deal with EA Sports, FIFA is no doubt scrambling for other games to plaster its name on to cover the financial blackhole they made themselves. Enter Matchday, with... | Read more »

Price Scanner via MacPrices.net

Apple Watch Ultra available today at Apple fo...
Apple has several Certified Refurbished Apple Watch Ultra models available in their online store for $589, or $210 off original MSRP. Each Watch includes Apple’s standard one-year warranty, a new... Read more
Amazon is offering coupons worth up to $109 o...
Amazon is offering clippable coupons worth up to $109 off MSRP on certain Silver and Blue M3-powered 24″ iMacs, each including free shipping. With the coupons, these iMacs are $150-$200 off Apple’s... Read more
Amazon is offering coupons to take up to $50...
Amazon has Apple’s M2-powered Mac minis in stock and on sale for up to $110 off MSRP, each including free delivery. Prices are valid after free coupons available on each mini’s product page, detailed... Read more
Use your Education discount to take up to $10...
Need a new Apple iPad? If you’re a student, teacher, or staff member at any educational institution, you can use your .edu email address when ordering at Apple Education to take up to $100 off the... Read more
Apple has 15-inch M2 MacBook Airs available f...
Apple has clearance, Certified Refurbished, 15″ M2 MacBook Airs available starting at $1019 and ranging up to $300 off original MSRP. These are the cheapest 15″ MacBook Airs for sale today at Apple.... Read more
Mac Studio with M2 Max CPU on sale for $1749,...
B&H Photo has the standard-configuration Mac Studio model with Apple’s M2 Max CPU in stock today and on sale for $250 off MSRP, now $1749 (12-Core CPU and 32GB RAM/512GB SSD). B&H offers... Read more
Save up to $260 on a 15-inch M3 MacBook Pro w...
Apple has Certified Refurbished 15″ M3 MacBook Airs in stock today starting at only $1099 and ranging up to $260 off MSRP. These are the cheapest M3-powered 15″ MacBook Airs for sale today at Apple.... Read more
Apple has 16-inch M3 Pro MacBook Pro in stock...
Apple has a full line of 16″ M3 Pro MacBook Pros available, Certified Refurbished, starting at $2119 and ranging up to $440 off MSRP. Each model features a new outer case, shipping is free, and an... Read more
Apple M2 Mac minis on sale for $120-$200 off...
Amazon has Apple’s M2-powered Mac minis in stock and on sale for $110-$200 off MSRP this weekend, each including free delivery: – Mac mini M2/256GB SSD: $469, save $130 – Mac mini M2/512GB SSD: $689.... Read more
Clearance 9th-generation iPads are in stock t...
Best Buy has Apple’s 9th generation 10.2″ WiFi iPads on clearance sale for starting at only $199 on their online store for a limited time. Sale prices for online orders only, in-store prices may vary... Read more

Jobs Board

Senior Mobile Engineer-Android/ *Apple* - Ge...
…Trust/Other Required:** NACI (T1) **Job Family:** Systems Engineering **Skills:** Apple Devices,Device Management,Mobile Device Management (MDM) **Experience:** 10 + Read more
Sonographer - *Apple* Hill Imaging Center -...
Sonographer - Apple Hill Imaging Center - Evenings Location: York Hospital, York, PA Schedule: Full Time Full Time (80 hrs/pay period) Evenings General Summary Read more
*Apple* Systems Administrator - JAMF - Activ...
…**Public Trust/Other Required:** None **Job Family:** Systems Administration **Skills:** Apple Platforms,Computer Servers,Jamf Pro **Experience:** 3 + years of Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.