Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/PacktPublishing/Hands-On-Design-Patterns-with-CPP

Hands-On Design Patterns with C++, published by Packt
https://github.com/PacktPublishing/Hands-On-Design-Patterns-with-CPP

Last synced: 5 days ago
JSON representation

Hands-On Design Patterns with C++, published by Packt

Lists

README

        

# Hands-On Design Patterns with C++

Hands-On Design Patterns with C++

This is the code repository for [Hands-On Design Patterns with C++](https://www.packtpub.com/application-development/hands-design-patterns-c?utm_source=github&utm_medium=repository&utm_campaign=9781788832564 ), published by Packt.

**Solve common C++ problems with modern design patterns and build robust applications**

## What is this book about?
C++ is a general-purpose programming language built with a bias towards embedded programming and systems programming. Design patterns are, in essence, a library of reusable components, only for software architecture, not for a concrete implementation.

This book covers the following exciting features:
* Recognize some of the most common design patterns used in C++, and what additional information is expressed by their use in context.
* Understand how to use C++ generic programming to solve some of the most common design problems.
* Explore the most powerful C++ idioms, their strengths, and drawbacks.
* Rediscover some of the most popular C++ idioms, such as Resource Acquisition Is Initialization, and learn the new ways they can be used together with generic programming.
* Understand the impact of different design and implementation choices on the program performance, and how to write well-designed and readable programs without sacrificing performance.

If you feel this book is for you, get your [copy](https://www.amazon.com/dp/1788832566) today!

https://www.packtpub.com/

## Instructions and Navigations
All of the code is organized into folders. For example, Chapter02.

The code will look like the following:
```
template
T increment(T x) { return x + 1; }
```

**Following is what you need for this book:**
This book is for experienced C++ developers and programmers who wish to learn about software design patterns and principles and apply them to create robust, reusable, and easily maintainable apps.

With the following software and hardware list you can run all code files present in the book (Chapter 1-18).
### Software and Hardware List
| Chapter | Software required | OS required |
| -------- | ------------------------------------ | ----------------------------------- |
| 5,6,8-11,15 | Google Benchmark | Windows, Mac OS X, and Linux |
| 5 | Google Test | Windows, Mac OS X, and Linux |
| 3,4 | Guidelines Support Library (GSL) | Windows, Mac OS X, and Linux |
| 11 | Folly | Windows, Mac OS X, and Linux |

### Errata
* The code block at page 43 _should be_ as follows:
```
Group g(3, 5);
int(g); // 3
long(g); // 5

```
* Page 429: The first code block on this page should be as follows:
```
void Point::accept(Visitor& v){
v.visit(x_); // double
v.visit(y_); // double
}

void Circle::accept(Visitor& v){
v.visit(c_); // Point
v.visit(r_); // double
}

void Line::accept(Visitor& v){
v.visit(p1_); // Point
v.visit(p2_); // Point
}
```

### Related products
* Hands-On System Programming with C++ [[Packt]](https://www.packtpub.com/application-development/hands-system-programming-c?utm_source=github&utm_medium=repository&utm_campaign=9781789137880 ) [[Amazon]](https://www.amazon.com/dp/1789137888)

* The Modern C++ Challenge [[Packt]](https://www.packtpub.com/application-development/modern-c-challenge?utm_source=github&utm_medium=repository&utm_campaign=9781788993869 ) [[Amazon]](https://www.amazon.com/dp/1788993861)


## Get to Know the Author
**Fedor G Pikus**
is a chief engineering scientist in the Design-to-Silicon division of Mentor Graphics (a Siemens business), and is responsible for the long-term technical direction of Calibre products, the design and architecture of software, and research into new software technologies. His earlier positions include senior software engineer at Google and chief software architect at Mentor Graphics. Fedor is a recognized expert on high-performance computing and C++. He has presented his works at CPPCon, SD West, DesignCon, and in software development journals, and is also an O'Reilly author. Fedor has over 25 patents, and over 100 papers and conference presentations on physics, EDA, software design, and C++.

### Suggestions and Feedback
[Click here](https://docs.google.com/forms/d/e/1FAIpQLSdy7dATC6QmEL81FIUuymZ0Wy9vH1jHkvpY57OiMeKGqib_Ow/viewform) if you have any feedback or suggestions.

### Download a free PDF

If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.

https://packt.link/free-ebook/9781788832564