Buy New
-36%
$51.24$51.24
FREE delivery Monday, April 27
Advertisement
Advertisement
Ships from: Amazon.com Sold by: Amazon.com
Used - Very Good
$35.26$35.26
FREE delivery Wednesday, April 29
Advertisement
Advertisement
Ships from: BooksRun Sold by: BooksRun
Sorry, there was a problem.
There was an error retrieving your Wish Lists. Please try again.Sorry, there was a problem.
List unavailable.
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.
Follow the author
OK
C++ Software Design: Design Principles and Patterns for High-Quality Software 1st Edition
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
- ISBN-101098113160
- ISBN-13978-1098113162
- Edition1st
- PublisherO'Reilly Media
- Publication dateOctober 25, 2022
- LanguageEnglish
- Dimensions7 x 0.75 x 9 inches
- Print length435 pages
Frequently bought together

Deals on related products
Customers also bought or read
- Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code
Paperback$44.99$44.99FREE delivery Mon, Apr 27 - Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture
Paperback$46.95$46.95FREE delivery Mon, Apr 27 - Operating Systems: Three Easy Pieces#1 Best SellerComputer Operating Systems Theory
Paperback$28.27$28.27Delivery Mon, Apr 27 - Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
Paperback$53.29$53.29FREE delivery May 2 - 5 - Tour of C++, A (C++ In-Depth Series)#1 Best SellerC++ Programming Language
Paperback$39.99$39.99FREE delivery Mon, Apr 27 - Modern C++ Programming Cookbook: Master Modern C++ with comprehensive solutions for C++23 and all previous standards
Paperback$25.55$25.55Delivery Tue, Apr 28 - C++ Memory Management: Write leaner and safer C++ code using proven memory-management techniques
Paperback$33.59$33.59Delivery Tue, Apr 28 - Design Patterns: Elements of Reusable Object-Oriented Software#1 Best SellerObject-Oriented Design
Hardcover$33.61$33.61Delivery Mon, Apr 27 - C++17 In Detail: Learn the Exciting Features of The New C++ Standard!
Paperback$35.99$35.99FREE delivery Mon, Apr 27 - Modern CMake for C++: Effortlessly build cutting-edge C++ code and deliver high-quality solutions
Paperback$26.81$26.81Delivery Tue, Apr 28 - C++: A Beginner's Guide, Second Edition: A Beginner's Guide, Second Edition
Paperback$39.00$39.00FREE delivery Tue, Apr 28 - The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples
Paperback$39.59$39.59FREE delivery Tue, Apr 28 - C++ High Performance: Master the art of optimizing the functioning of your C++ code, 2nd Edition
Paperback$29.96$29.96Delivery Tue, Apr 28 - C++ Best Practices: 45ish Simple Rules with Specific Action Items for Better C++ (With Color Syntax Highlighting)
Paperback$25.99$25.99Delivery Tue, Apr 28 - Modern C++ Design: Generic Programming and Design Patterns Applied (C++ In-Depth Series)
Paperback$57.71$57.71FREE delivery Mon, Apr 27 - Elements of Programming Interviews: The Insiders' Guide
Paperback$21.99$21.99$3.99 delivery Tue, Apr 28 - Effective C++: 55 Specific Ways to Improve Your Programs and Designs (Addison-Wesley Professional Computing Series)
Paperback$36.67$36.67FREE delivery Mon, Apr 27 - C++ in Embedded Systems: A practical transition from C to modern C++
Paperback$39.99$39.99FREE delivery Tue, Apr 28 - Asynchronous Programming with C++: Build blazing-fast software with multithreading and asynchronous programming for ultimate efficiency
Paperback$41.99$41.99FREE delivery Tue, Apr 28 - Fluent Python: Clear, Concise, and Effective Programming
Paperback$40.00$40.00FREE delivery Mon, Apr 27 - Hands-On Machine Learning with C++: Build, train, and deploy end-to-end machine learning and deep learning pipelines
Paperback$39.99$39.99FREE delivery Tue, Apr 28
From the brand
-
Your partner in learning
-
Bestsellers
-
Software Development
-
Programming Languages
-
AI / Machine Learning
-
Data Science
-
Data, Databases and more
-
Cloud Services
-
Business
-
Finance
-
Blockchain / Cryptocurrency
-
Security
-
Lean series
-
Cookbooks
-
Head First series
-
97 Things series
-
Sharing the knowledge of experts
O'Reilly's mission is to change the world by sharing the knowledge of innovators. For over 40 years, we've inspired companies and individuals to do new things (and do them better) by providing the skills and understanding that are necessary for success.
Our customers are hungry to build the innovations that propel the world forward. And we help them do just that.
From the Publisher
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
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)
- #29 in C++ Programming Language
- #34 in Object-Oriented Design
- #151 in Software Development (Books)
- Customer Reviews:
About the author

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).
Related products with free delivery on eligible orders
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Generated from the text of customer reviewsSelect to learn more
Top reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on April 8, 2023Format: 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!
- Reviewed in the United States on January 20, 2025Format: PaperbackVerified PurchaseWhile 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!
- Reviewed in the United States on October 13, 2023Format: PaperbackVerified PurchaseHaving 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++.
- Reviewed in the United States on August 22, 2023Format: PaperbackVerified PurchaseThis 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.
- Reviewed in the United States on October 9, 2022Format: KindleVerified PurchaseC++ 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.
- Reviewed in the United States on June 16, 2024Format: PaperbackVerified PurchaseThe 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.
Top reviews from other countries
Nick KeighleyReviewed in the United Kingdom on February 12, 20234.0 out of 5 stars A nice walk through modern C++
Format: PaperbackVerified PurchaseAn idea of how to design C++ programs using the newer features.
rpolasekReviewed in Germany on February 28, 20265.0 out of 5 stars Excellent Book
Format: PaperbackVerified PurchaseAs 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. RuelReviewed in Canada on November 26, 20225.0 out of 5 stars A MUST if you’re a C++ developer in 2022
Format: PaperbackVerified PurchaseIf 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.
-
AntonioReviewed in Italy on November 10, 20235.0 out of 5 stars Molto più che un libro per programmatori C++
Format: PaperbackVerified PurchaseOttima 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.
-
Xavier RReviewed in Mexico on July 11, 20255.0 out of 5 stars Muy informativo, pero no es para principiantes
Format: PaperbackVerified PurchaseEste 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.
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.5.0 out of 5 stars
Xavier RMuy informativo, pero no es para principiantes
Reviewed in Mexico on July 11, 2025
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





















