Master C++ Programming with Free Open-Source Books
C++ Books
Books are very personal and subjective possessions. And programming books are no exception. But regardless of their style, focus, or pace, good C++ programming books take the reader on a compelling journey, opening eyes to the capabilities of the language, and showing how it can be used to build just about anything.
I have carefully selected C++ books which all share the virtue of being compelling to read. I recommend 9 books which are released under public copyright licenses. Before doing so, I’ll give a brief introduction to C++.
C++ was designed by Bjarne Stroustrup with its first release in 1983. It is a statically typed, free-form, multi-paradigm, portable, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it has a combination of both high-level and low-level language features. C++ was designed for systems and applications programming, extending the C programming language. Hence the name C++, the increment operator is written as ++.
C++ remains a popular programming language. For example, it is heavily used in embedded systems, banking, and telecommunications. It is a superset of C that retains the efficiency and notational convenience of C, while providing facilities for stronger type checking, multiple inheritance, data abstraction, exception handling operator overloading, generic programming, and object-oriented programming. C++ has influenced many other languages including C#, Java, and the development of C.
We have published a series covering the best open source programming books for other popular languages. Read them here.
The Boost C++ LibrariesBy Boris Schäling (570 pages) The Boost C++ libraries are regarded as important and influential in the C++ world. These portable libraries provide support for tasks and structures such as multithreading, containers, string and text processing, iterators, linear algebra, pseudo-random number generation, template metaprogramming, concurrent programming, data structures, image processing, regular expressions, and unit testing. Boost works on almost any modern operating system, including Linux and Windows variants, and supports most modern compilers. This book introduces 72 Boost libraries that provide a wide range of useful capabilities. They help programmers manage memory and process strings more easily. The libraries provide containers and other data structures that extend the standard library. They make it easy to build platform-independent network applications. This is a gem to add to any collection. The 430 code examples illustrate the libraries’ capabilities well. Chapters examine memory management, string handling, containers, data structures, algorithms, communication, streams and files, and time. Later chapters proceed to explore functional, parallel and generic programming. The book closes with masterly coverage on language extensions, error and number handling, application libraries, design patterns, and other libraries. Boost C++ Libraries is released under the Creative Commons Attribution – NonCommercial – NoDerivatives 4.0 International License. There is a print version to buy on Amazon if you like to carry books around. Electronic version are also available to purchase in Kindle, E-book, and PDF formats. |
|
C++ AnnotationsBy Frank B. Brokken (1029 pages) The C++ Annotations offers an extensive tutorial about the C++ programming language. It can be used as a textbook for C++ programming courses. The C++ Annotations is intended for knowledgeable users of C or a language that uses a C-like grammar. Chapters include:
The book is available in HTML, PDF, PostScript, and plain text. It’s freely distributable, and published under the terms of the GNU General Public License. |
|
Introduction to Design Patterns in C++ with Qt 4, AnBy Alan Ezust, Paul Ezust (656 pages) This book starts with an introduction to the basic C++ elements, OO concepts, UML, and the core Qt classes. It moves on to higher-level programming ideas, Qt modules, and design patterns. The final part of the book examines important C++ features with rigour. There is good coverage on functions, inheritance and polymorphism. The book is designed to be used in a university class, and assumes no C or C++ programming experience. It includes Qt examples, exercises, solutions, and lecture slides for instructors. This book is part of Bruce Perens’ Open Source Series. All books in this series are released under the Open Publication License, v1.0 or later. |
|
How to Think Like a Computer Scientist: C++By Allen B. Downey (191 pages) How To Think Like A Computer Scientist C++ version is a concise and gentle introduction to software design using the C++ programming language. Intended for would-be developers with no programming experience, this book starts with the most basic concepts and gradually adds new material at a pace that is comfortable to the reader. This book providing a wealth of information on:
How to Think Like a Computer Scientist: C++ Version is a free textbook available under the Creative Commons Attribution-NonCommercial 3.0 Unported License. |
|
C++ GUI Programming with Qt 3By Jasmin Blanchette, Mark Summerfield (464 pages) The latest stable release of Qt is version 5.8. This book teaches the reader how to write GUI programs using Qt 3, the last version of Qt 3 was released in 2004. But there is a lot of the book which still makes sense for Qt 4 and Qt 5. C++ GUI Programming with Qt 3 assumes the reader has a rudimentary understanding of C++; this isn’t a book intended for a beginner. The book introduces the reader to all the concepts and practices to program GUI applications using Qt. Central topics are given a thorough treatment, and there is some specialized and advanced material. This book is part of Bruce Perens’ Open Source Series. All books in this series are released under the Open Publication License, v1.0 or later. |
|
Open Data Structures (in C++)
|
|
Cross-Platform GUI Programming with wxWidgetsBy Julian Smart and Kevin Hock with Stefan CsomorBrifll (744 pages) wxWidgets is a popular C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. It supports a wide range of graphical libraries. Following a brief introduction and getting started, the book’s chapters cover:
This book is part of Bruce Perens’ Open Source Series. All books in this series are released under the Open Publication License, v1.0 or later. |
|
The Rook’s Guide to C++By Jeremy Hansen (160 pages) Chapters cover variables, literals and constants, output, input, data types and conversion, conditionals (if, else and else if, switch statements), strings, loops, arrays, blocks, functions and scope. Later chapters examine problem solving and troubleshooting, the preprocessor, advanced arithmetic, file I/O, pointers, dynamic data, classes and abstraction, separation compilation and STL. Most of the book was written during a hackathon weekend by 25 Norwich University students. Certainly not flawless, but a good general text. It is released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. The book is also available in print from Amazon. |
|
An Introduction to GCCBy Brian Gough (144 pages) An Introduction to GCC provides an introduction to the GNU C and C++ Compilers, gcc and g++, which are part of the GNU Compiler Collection (GCC). This book explains how to use the compiler itself. Based on years of observation of questions posted on mailing lists, it guides the reader straight to the important options of GCC. Chapters:
This book is published under the GNU Free Documentation License. |
A great selection, thank you so much! Just a minor bug: the link to “Open Data Structures” leads to some other tutorial. Should it be http://opendatastructures.org instead?
Thanks for letting me know. The bug has been fixed!
What are the dates of the updates of those books? are they covering some modern C++ stuff? C++11/14? etc? I worry that not…
I’ll leave that as an exercise for the reader to look up. Enjoy!
Thanks for the great collections
Thanks a lot, dude! Actually I’m a senior year student, and I want to improve my skills using C++ (I’ve used C#,Python,Java and PHP) so this would be helpful!
Much obliged, fella! Really I’m a senior year understudy, and I need to enhance my abilities utilizing C++ (I’ve utilized C#,Python,Java and PHP) so this would be useful!