Sponsored
Enjoy fast, free delivery, exclusive deals, and award-winning movies & TV shows.
Buy New
-36% $51.24
FREE delivery Monday, April 27
Ships from: Amazon.com
Sold by: Amazon.com
$51.24 with 36 percent savings
List Price: $79.99 Image
FREE delivery Monday, April 27
Or Prime members get FREE delivery Tomorrow, April 23. Order within 4 hrs 59 mins. Join Prime
In Stock
$$51.24 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$51.24
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Shipper / Seller
Amazon.com
Amazon.com
Shipper / Seller
Amazon.com
Returns
FREE 30-day refund/replacement
FREE 30-day refund/replacement
Quick refund
Usually issued within 24 hours. See exceptions
FREE return
At least one free return option available.
Convenient dropoff
At any of our 50,000 US locations.
See return policy
Gift options
Available at checkout
Available at checkout This item is a gift. Change
At checkout, you can add a custom message, a gift receipt for easy returns and have the item gift-wrapped
Payment
Secure transaction
Your transaction is secure
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
$35.26
Minimal or no signs of wear, writing, or notes. ~ BooksRun: cheaper books, every time! Minimal or no signs of wear, writing, or notes. ~ BooksRun: cheaper books, every time! See less
FREE delivery Wednesday, April 29. Details
Or fastest delivery Saturday, April 25. Details
Only 1 left in stock - order soon.
$$51.24 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$51.24
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Access codes and supplements are not guaranteed with used items.
Ships from and sold by BooksRun.
Added to

Sorry, there was a problem.

There was an error retrieving your Wish Lists. Please try again.

Sorry, there was a problem.

List unavailable.
Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

  • C++ Software Design: Design Principles and Patterns for High-Quality Software

Follow the author

Get new release updates & improved recommendations
Something went wrong. Please try your request again later.

C++ Software Design: Design Principles and Patterns for High-Quality Software 1st Edition

4.7 out of 5 stars (152)

{"desktop_buybox_group_1":[{"displayPrice":"$51.24","priceAmount":51.24,"currencySymbol":"$","integerValue":"51","decimalSeparator":".","fractionalValue":"24","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"PBbGZ54RLhS2z4iSIpbct6FZ0EPoCFVQF%2B7JsnItwdz%2B4qLd6WJWA0zwbc4r%2BcSvu4%2B7qQRfDcV65P6aYx34NcDnykVcsN8NFyqTEAp7WCQzb1JnAmuid6oHlu%2BVMiOvh3KlANbw8Ee3hMHDnzWAQA%3D%3D","locale":"en-US","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"$35.26","priceAmount":35.26,"currencySymbol":"$","integerValue":"35","decimalSeparator":".","fractionalValue":"26","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"PBbGZ54RLhS2z4iSIpbct6FZ0EPoCFVQ2ydeDu2RCDDzJVL%2BySjbt%2BPpDeHjpsjKFrrR%2B5FNs4kzF9KHUPG%2FmnNGTyE%2FlwLog7ddw80ZFqjtVL8AwIrLyNsMb03CpUUyr%2F45J%2B7X8LThUDPZDjiOgE%2BmvFwru1K70s3M7m33db%2BKgw6c3vbnnSq%2FRoYxWpKf","locale":"en-US","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}

Purchase options and add-ons

Good software design is essential for the success of your project, but designing software is hard to do. You need to have a deep understanding of the consequences of design decisions and a good overview of available design alternatives. With this book, experienced C++ developers will get a thorough, practical, and unparalleled overview of software design with this modern language.

C++ trainer and consultant Klaus Iglberger explains how you can manage dependencies and abstractions, improve changeability and extensibility of software entities, and apply and implement modern design patterns to help you take advantage of today's possibilities. Software design is the most essential aspect of a software project because it impacts the software's most important properties: maintainability, changeability, and extensibility.

  • Learn how to evaluate your code with respect to software design
  • Understand what software design is, including design goals such as changeability and extensibility
  • Explore the advantages and disadvantages of each design approach
  • Learn how design patterns help solve problems and express intent
  • Choose the right form of a design pattern to get the most out of its advantages

Sponsored

Frequently bought together

This item: C++ Software Design: Design Principles and Patterns for High-Quality Software
$51.24
Get it as soon as Monday, Apr 27
In Stock
Ships from and sold by Amazon.com.
+
$52.34
Get it May 26 - Jun 15
Usually ships within 7 to 8 days
Ships from and sold by World Deals, USA.
+
$28.27
Get it as soon as Monday, Apr 27
In Stock
Ships from and sold by Amazon.com.
Total price: $00
To see our price, add these items to your cart.
Details
Added to Cart
Some of these items ship sooner than the others.
Choose items to buy together.

Customers also bought or read

Loading...

From the brand


From the Publisher

C++ Software Design

From the Preface

Why I Wrote This Book

By the time I was really digging into the language (that was a few years after the first C++ standard had been released), I had read pretty much every C++ book there was. But despite the fact that many of these books were great and definitely paved the way for my current career as a C++ trainer and consultant, they were too focused on the little details and the implementation specifics, and too far away from the bigger picture of maintainable software.

At the time, very few books truly focused on the bigger picture, dealing with the development of large software systems. Among these were John Lakos’s Large Scale C++ Software Design, a great but literally heavy introduction to dependency management, and the so-called Gang of Four book, which is the classic book on software design patterns. Unfortunately, over the years, this situation hasn’t really changed: most books, talks, blogs, etc., primarily focus on language mechanics and features—the small details and specifics. Very few, and in my opinion way too few, new releases focus on maintainable software, changeability, extensibility, and testability. And if they try to, they unfortunately quickly fall back into the common habit of explaining language mechanics and demonstrating features.

This is why I’ve written this book. A book that does not, in contrast to most others, spend time on the mechanics or the many features of the language, but primarily focuses on changeability, extensibility, and testability of software in general. A book that does not pretend that the use of new C++ standards or features will make the difference between good or bad software, but instead clearly shows that it is the management of dependencies that is decisive, that the dependencies in our code decide between it being good or bad. As such, it is a rare kind of book in the world of C++ indeed, as it focuses on the bigger picture: software design.

Who This Book Is For

This book is of value to every C++ developer. In particular, it is for every C++ developer interested in understanding the usual problems of maintainable software and learning about common solutions to these problems (and I assume that is indeed every C++ developer). However, this book is not a C++ beginner’s book. In fact, most of the guidelines in this book require some experience with software development in general and C++ in particular. For instance, I assume that you have a firm grasp of the language mechanics of inheritance hierarchies and some experience with templates. Then I can reach for the corresponding features whenever necessary and appropriate. Once in a while, I will even reach for some C++20 features (in particular C++20 concepts). However, as the focus is on software design, I will rarely dwell on explaining a particular feature, so if a feature is unknown to you, please consult your favorite C++ language reference. Only occasionally will I add some reminders, mostly about common C++ idioms (such as the Rule of 5).

Editorial Reviews

About the Author

Klaus Iglberger is a freelancing C++ trainer and consultant. He shares his expertise of 15+ years of C++ in popular training courses around the world and is a frequent speaker at C++ conferences. Since his PhD in 2010 he has focused on large-scale software design and on how to improve the maintainability of software. His major interest is how to design for change and extensibility and how to apply design patterns to simplify the task.

Product details

  • Publisher ‏ : ‎ O'Reilly Media
  • Publication date ‏ : ‎ October 25, 2022
  • Edition ‏ : ‎ 1st
  • Language ‏ : ‎ English
  • Print length ‏ : ‎ 435 pages
  • ISBN-10 ‏ : ‎ 1098113160
  • ISBN-13 ‏ : ‎ 978-1098113162
  • Item Weight ‏ : ‎ 2.31 pounds
  • Dimensions ‏ : ‎ 7 x 0.75 x 9 inches
  • Best Sellers Rank: #181,195 in Books (See Top 100 in Books)
  • Customer Reviews:
    4.7 out of 5 stars (152)

About the author

Follow authors to get new release updates, plus improved recommendations.
Klaus Iglberger
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

Klaus Iglberger is a freelance C++ trainer and consultant. He completed his PhD in Computer Science in 2010 and has subsequently concentrated on large-scale C++ software design. He shares his expertise through popular C++ courses all around the world. He is also the creator and lead designer of the Blaze C++ math library (https://bitbucket.org/blaze-lib/blaze/), one of the organizers of the Munich C++ user group (MUC++) (https://www.meetup.com/MUCplusplus/), and the (co-)organizer of the Back-to-Basics (https://cppcon.org/b2b/) and Software Design (https://cppcon.org/softwaredesign/) tracks at CppCon (https://cppcon.org).

Sponsored

Customer reviews

4.7 out of 5 stars
152 global ratings
Sponsored

Customers say

Customers find this C++ book informative and well-written, with one review highlighting its comprehensive coverage of design patterns and another noting its deep understanding of modern C++ principles. They appreciate its readability, with one customer mentioning how it allows readers to grasp complex concepts effortlessly.
AI Generated from the text of customer reviews

Select to learn more

10 customers mention design, 9 positive, 1 negative
Customers appreciate the book's coverage of C++ design patterns, with one customer highlighting its in-depth treatment of software design principles, while another notes its focus on design for extension and testability.
...Really elevated my understanding of software design and architecture at several levels. The book is infinitely better written than this review!Read more
...techniques and best practices, this book guides readers through the process of designing, implementing, and maintaining robust, efficient, and...Read more
This book provides modern aspects for many well-known design patterns. Both their advantages and disadvantages are discussed in great detail....Read more
...before me, this book is excellent advanced and high level resource on designing software with modern C++. I wont belabor the point....Read more
9 customers mention content, 9 positive, 0 negative
Customers find the content of the book great overall, with one customer noting it provides the necessary tools to build high-quality software, while another mentions it elevates C++ programming skills.
This is a great book with really clear explanations of the major design patterns. It updates GoF and is much easier to understand....Read more
...learning design patterns, or refreshing your knowledge, the book will be invaluable.Read more
...The information and guidance is updated, modern, and understandable....Read more
...The book includes great discussions about how to use the classic Gang of Four Design Patterns, both the "old-fashioned" way with virtual hierarchies...Read more
8 customers mention informative, 7 positive, 1 negative
Customers find the book informative, with one review highlighting its comprehensive coverage of modern C++ principles and patterns, while another notes its updated content.
...I find Klaus to be a first-rate teacher, who has deep knowledge and can convey it well....Read more
...published by the prestigious O'Reilly Media, is a groundbreaking resource for software developers looking to elevate their C++ programming skills....Read more
Like other reviewers have stated before me, this book is excellent advanced and high level resource on designing software with modern C++....Read more
This is a great book with really clear explanations of the major design patterns. It updates GoF and is much easier to understand....Read more
7 customers mention readability, 6 positive, 1 negative
Customers find the book readable and understandable, with one customer noting that it allows readers to grasp complex concepts effortlessly, while another describes it as a good textbook for C++ programmers.
...It updates GoF and is much easier to understand....Read more
...The information and guidance is updated, modern, and understandable....Read more
...Klaus to be a first-rate teacher, who has deep knowledge and can convey it well....Read more
...writing is precise, engaging, and insightful, allowing readers to grasp complex concepts effortlessly....Read more

Top reviews from the United States

  • Reviewed in the United States on April 8, 2023
    Format: PaperbackVerified Purchase
    "C++ Software Design" by Klaus Iglberger, published by the prestigious O'Reilly Media, is a groundbreaking resource for software developers looking to elevate their C++ programming skills. With a focus on contemporary techniques and best practices, this book guides readers through the process of designing, implementing, and maintaining robust, efficient, and maintainable C++ applications.

    Klaus Iglberger, an accomplished expert in the field, offers a masterful blend of in-depth knowledge and practical experience, making this book an essential read for both beginners and seasoned developers. His writing is precise, engaging, and insightful, allowing readers to grasp complex concepts effortlessly. With numerous real-world examples and hands-on exercises, the book fosters a deep understanding of modern C++ principles and practices.

    "C++ Software Design" covers a wide array of topics that cater to various aspects of software development. Readers will gain a solid foundation in C++ fundamentals, learn advanced language features, and explore libraries and tools to enhance productivity. The book delves into vital topics such as object-oriented programming, design patterns, performance optimization, and error handling, providing the necessary tools to build high-quality software.

    One of the standout features of this book is its focus on modern C++ standards, such as C++11, C++14, C++17, and C++20. These updates provide numerous enhancements to the language, enabling developers to create more efficient, maintainable, and powerful applications. Iglberger's thorough explanation of these modern features makes it easy for readers to adopt and implement them in their own projects.

    In conclusion, "C++ Software Design" by Klaus Iglberger is a must-read for anyone looking to excel in C++ programming. This comprehensive guide, with its clear writing, real-world examples, and extensive coverage of modern C++ standards, empowers developers to create exceptional software. If you're aiming to stay current with industry trends and deliver high-quality C++ applications, don't miss this invaluable resource!
    2 people found this helpful
    Report
  • Reviewed in the United States on January 20, 2025
    Format: PaperbackVerified Purchase
    While watching one of this guys CPPCon lecture for the nth time, I decided "I've bet he's written a book, I don't know what it is but I'm going to buy it." It ended up being the right book at the right time for me. The information and guidance is updated, modern, and understandable. Really elevated my understanding of software design and architecture at several levels. The book is infinitely better written than this review!
    4 people found this helpful
    Report
  • Reviewed in the United States on October 13, 2023
    Format: PaperbackVerified Purchase
    Having taken a class with Klaus in 2019, I was excited to get my hands on his book. I find Klaus to be a first-rate teacher, who has deep knowledge and can convey it well. Taking his class (which I recommend) was great, but I needed more time. This book gives me just that. His technique for teaching comes through in his writing. The book allows me to go over pieces at my pace and when necessary (for me), to review.

    I appreciate that design is complicated, and the book gives details about when and why you might use a particular pattern. When designing good software, a lot of your decisions are very dependent on what you’re designing and how you want to implement. Those nuances come through as each pattern is explained in detail.

    Finally, the book uses modern C++ standards in its examples, including C++ 20; while also including previous standards as well. I know GoF was the standard in design patterns, but for me this worked well as it is specific to C++.
    3 people found this helpful
    Report
  • Reviewed in the United States on August 22, 2023
    Format: PaperbackVerified Purchase
    This is a great book with really clear explanations of the major design patterns. It updates GoF and is much easier to understand. Thorough treatment of SOLID, value-based semantics, definition of design patterns, and performance considerations. There are really nice little examples working through the patterns. He also explains the problem of misuse of patterns, particularly since many patterns are quite similar in the implementations and it can be easy to confuse them. Well edited with few typos.
    3 people found this helpful
    Report
  • Reviewed in the United States on October 9, 2022
    Format: KindleVerified Purchase
    C++ Software Design is about, well, software design. This is as opposed to a lot of nitty gritty details about C++ syntax. The book really is about design, not C++ features (of course features play a role, you have to know C++). There are definitely some complex topics in the book, but in my opinion Iglberger does a good job of making them clear.

    Primary concepts are (there are more in the form of Guidelines):

    Understanding the importance of software design.

    Design for change.

    Separate interfaces to avoid artificial coupling (the Interface Segregation Principle, see the link above).

    Design for Testability.

    Design for extension (the Open Closed Principle, see the link above).

    Iglberger offers great high-level advice:

    Separate concerns

    Prefer composition to inheritance

    Prefer a non-intrusive design

    Prefer value semantics over reference semantics

    The book includes great discussions about how to use the classic Gang of Four Design Patterns, both the "old-fashioned" way with virtual hierarchies, and the "modern C++" way using value semantics.

    The book is friendly, conversational, and very readable for something about such a complex subject.

    Highly recommend.
    9 people found this helpful
    Report
  • Reviewed in the United States on June 16, 2024
    Format: PaperbackVerified Purchase
    The content of the book is great overall, however it could have been edited down by 20-30%. Many of the footnotes are not useful (most an attempt at humor), there is a lot of repetition in regards to stating what will be talked about before a section then restating it again at the end of a section. The writing style is also quite clunky as the author keeps trying to form an imaginary dialogue with the reader. I suppose I prefer the more classical, direct writing styles.

    Apart from the minor nitpicking, the content of the book is still great, but could have easily fit a couple more design patterns that the author wanted if the book was edited a bit better.
    One person found this helpful
    Report

Top reviews from other countries

Translate all reviews to English
  • Nick Keighley
    4.0 out of 5 stars A nice walk through modern C++
    Reviewed in the United Kingdom on February 12, 2023
    Format: PaperbackVerified Purchase
    An idea of how to design C++ programs using the newer features.
  • rpolasek
    5.0 out of 5 stars Excellent Book
    Reviewed in Germany on February 28, 2026
    Format: PaperbackVerified Purchase
    As someone who has spent many years writing and maintaining large-scale C++ systems, I can say that C++ Software Design by Klaus Iglberger is one of the most valuable resources I’ve come across in recent years. It goes far beyond syntax or language features — it’s about thinking in C++, understanding dependencies, and crafting maintainable software architectures.Klaus doesn’t just know C++; he understands how to teach it. He takes concepts that are notoriously difficult — like decoupling, design by interfaces, or dependency management — and explains them with rare clarity and precision. His examples are practical and directly applicable to real-world projects, which makes the book not just educational but immediately useful.What I especially appreciate is that the book reflects a deep, experience-based understanding of the challenges C++ developers face today. It bridges the gap between theory and practice, showing how modern C++ supports clean design without sacrificing performance or control.If you’re serious about writing modern, maintainable, and elegant C++ code, this book is a must-read. It’s the kind of work that makes you rethink how you design systems — and helps you become a better engineer in the process.
  • J-C. Ruel
    5.0 out of 5 stars A MUST if you’re a C++ developer in 2022
    Reviewed in Canada on November 26, 2022
    Format: PaperbackVerified Purchase
    If you’re a C++ developer in 2022, this is THE reference you need to share with your team. First release on 2022-09-21. Just wow.

    I find Iglberger’s approach beautifully rigorous ! Type erasure and free functions revolutionized my way of breaking dependencies.

    Reading the book is very pleasant, it’s like hearing him lecturing one of these great presentations he does. He has a way of ordering his arguments in a really well organized top-down manner.
  • Antonio
    5.0 out of 5 stars Molto più che un libro per programmatori C++
    Reviewed in Italy on November 10, 2023
    Format: PaperbackVerified Purchase
    Ottima trattazione dei design pattern in ambito C++. Scritto a diversi livelli di astrazione, dove molte delle considerazioni possono essere riportate anche su codebase con linguaggi differenti.

    Non aggiunge molto di nuovo sui vari pattern, però la trattazione è tra le più precise che si possono trovare. C'è sempre una forte discussione su quale contesto sia il migliore in ogni pattern e vengono sempre discussi i possibili contro di certe scelte di design.
    Ho apprezzato tanto il formalismo usato nei vari schemi delle diverse architetture presentate, molto efficace dal mio punto di vista.

    Lato C++ anche ci sono parecchi pattern di implementazione interessanti, che aggiungono parecchio valore al libro. Molto interessante anche come usa le ultime feature del linguaggio per ridurre le varie dipendenze dei pattern GoF classici.

    Quindi mi sento di consigliarlo fortemente, anche se conoscete la maggioranza dei pattern presenti nel libro, visto che molti punti di vista portati dall'autore sono veramente interessanti.
    Report
  • Xavier R
    5.0 out of 5 stars Muy informativo, pero no es para principiantes
    Reviewed in Mexico on July 11, 2025
    Format: PaperbackVerified Purchase
    Este libro es uno de los mejores que existen para implementar los patrones de de diseño de software en C++. NO es una lectura fácil y no es para principiantes. De hecho su lectura es bastante pesada y requiere de amplios conocimientos en: características de las últimas versiones del lenguaje (C++ 20+), en programación con plantillas, y en ingeniería de software.

    El autor comienza mostrando las implementaciones clásicas de algunos patrones de diseño, luego explica sus limitaciones, y termina exponiendo implementaciones alternativas, principalmente utilizando plantillas y algunas cosas de C++ 20+.

    Si eres principiante en C++, este libro todavía no es para tí. Si eres un programador experimentado en C++, entonces te recomiendo este libro porque te hará volar la mente y verás al lenguaje de una manera completamente diferente.
    Customer image
    Xavier R
    5.0 out of 5 stars
    Muy informativo, pero no es para principiantes

    Reviewed in Mexico on July 11, 2025
    Este libro es uno de los mejores que existen para implementar los patrones de de diseño de software en C++. NO es una lectura fácil y no es para principiantes. De hecho su lectura es bastante pesada y requiere de amplios conocimientos en: características de las últimas versiones del lenguaje (C++ 20+), en programación con plantillas, y en ingeniería de software.

    El autor comienza mostrando las implementaciones clásicas de algunos patrones de diseño, luego explica sus limitaciones, y termina exponiendo implementaciones alternativas, principalmente utilizando plantillas y algunas cosas de C++ 20+.

    Si eres principiante en C++, este libro todavía no es para tí. Si eres un programador experimentado en C++, entonces te recomiendo este libro porque te hará volar la mente y verás al lenguaje de una manera completamente diferente.
    Images in this review
    Customer image Customer image