My Account Log in

2 options

Mastering C++ Programming : Modern C++ 17 at your fingertips / Jeganathan Swaminathan.

Ebook Central College Complete Available online

View online

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Swaminathan, Jeganathan, author.
Language:
English
Subjects (All):
C++ (Computer program language).
Physical Description:
1 online resource (1 volume) : illustrations
Edition:
1st edition
Other Title:
Mastering C plus plus programming
Place of Publication:
Birmingham, [England] : Packt, 2017.
System Details:
text file
Biography/History:
Swaminathan Jeganathan: Jeganathan Swaminathan, Jegan for short, is a freelance software consultant and founder of TekTutor, with over 17 years of IT industry experience. In the past, he has worked for AMD, Oracle, Siemens, Genisys Software, Global Edge Software Ltd, and PSI Data Systems. He has consulted for Samsung WTD (South Korea) and National Semiconductor (Bengaluru). He now works as a freelance external consultant for Amdocs (India). He works as freelance software consultant and freelance corporate trainer. He holds CSM, CSPO, CSD, and CSP certifications from Scrum Alliance. He is a polyglot software professional and his areas of interest include a wide range of C++, C#, Python, Ruby, AngularJS, Node. js, Kubernetes, Ansible, Puppet, Chef, and Java technologies. He is well known for JUnit, Mockito, PowerMock, gtest, gmock, CppUnit, Cucumber, SpecFlow, Qt, QML, POSIX Pthreads, TDD, BDD, ATDD, NoSQL databases (MongoDB and Cassandra), Apache Spark, Apache Kafka, Apache Camel, Dockers, Continuous Integration (CI), Continuous Delivery (CD), Maven, Git, cloud computing, and DevOps. You can reach him for any C++, Java, Qt, QML, TDD, BDD, and DevOps-related training or consulting assignments. Jegan is a regular speaker at various technical conferences.
Summary:
Take your C++ coding to the next level by leveraging the latest features and advanced techniques to building high performing, reliable applications. About This Book Get acquainted with the latest features in C++ 17 Take advantage of the myriad of features and possibilities that C++ offers to build real-world applications Write clear and expressive code in C++, and get insights into how to keep your code error-free Who This Book Is For This book is for experienced C++ developers. If you are a novice C++ developer, then it's highly recommended that you get a solid understanding of the C++ language before reading this book What You Will Learn Write modular C++ applications in terms of the existing and newly introduced features Identify code-smells, clean up, and refactor legacy C++ applications Leverage the possibilities provided by Cucumber and Google Test/Mock to automate test cases Test frameworks with C++ Get acquainted with the new C++17 features Develop GUI applications in C++ Build portable cross-platform applications using standard C++ features In Detail C++ has come a long way and has now been adopted in several contexts. Its key strengths are its software infrastructure and resource-constrained applications. The C++ 17 release will change the way developers write code, and this book will help you master your developing skills with C++. With real-world, practical examples explaining each concept, the book will begin by introducing you to the latest features in C++ 17. It encourages clean code practices in C++ in general, and demonstrates the GUI app-development options in C++. You'll get tips on avoiding memory leaks using smart-pointers. Next, you'll see how multi-threaded programming can help you achieve concurrency in your applications. Moving on, you'll get an in-depth understanding of the C++ Standard Template Library. We show you the concepts of implementing TDD and BDD in your C++ programs, and explore template-based generic programming, giving you the expertise to build powerful applications. Finally, we'll round up with debugging techniques and best practices.By the end of the book, you'll have an in-depth understanding of the language and its various facets. Style and approach This straightforward guide will help you level up your skills in C++ programming, be it for enterprise software or for low-latency applications like games. Filled with real-world, practical examples, this book will take you gradually up the steep learning...
Contents:
Cover
Copyright
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Dedication
Table of Contents
Preface
Chapter 1: C++17 Features
C++17 background
What's new in C++17?
What features are deprecated or removed in C++17?
Key features in C++17
Easier nested namespace syntax
New rules for type auto-detection from braced initializer list&amp
#160
Simplified static_assert&amp
The std::invoke( ) method
Structured binding
If and Switch local scoped variables
Template type auto-deduction for class templates
Inline variables
Summary
Chapter 2: Standard Template Library
The Standard Template Library architecture
Algorithms
Iterators
Containers
Functors
Sequence&amp
containers
Array
Code walkthrough
Commonly used APIs in an array
Vector&amp
Commonly used vector APIs
Pitfalls of a vector
List&amp
Commonly used APIs in a list
Forward list
Commonly used APIs in a forward_list container
Deque
Commonly used APIs in a deque
Associative containers
Set
Commonly used APIs in a set
Map
Commonly used APIs in a map
Multiset
Multimap
Unordered sets
Unordered maps
Unordered multisets
Unordered multimaps
Container adapters
Stack
Commonly used APIs in a stack
Queue
Commonly used APIs in a queue
Priority queue
Commonly used APIs in a priority queue
Chapter 3: Template Programming
Generic programming
Function templates
Overloading function templates
Class template
Explicit class specializations
Code walkthrough.
Partial template specialization
Chapter 4: Smart Pointers
Memory management
Issues with raw pointers
Smart pointers
auto_ptr
Code walkthrough - Part 1
Code walkthrough - Part 2
unique_ptr
shared_ptr
weak_ptr
Circular dependency
Chapter 5: Developing GUI Applications in C++
Qt&amp
Installing Qt 5.7.0 in Ubuntu 16.04
Qt Core
Writing our first Qt console application
Qt Widgets
Writing our first Qt GUI application
Layouts
Writing a GUI application with a horizontal layout
Writing a GUI application with a vertical layout
Writing a GUI application with a box layout
Writing a GUI application with a grid layout
Signals and slots
Using stacked layout in Qt applications
Writing a simple math application combining multiple layouts
Chapter 6: Multithreaded Programming and Inter-Process Communication
Introduction to POSIX pthreads
Creating threads with the&amp
pthreads library
How to compile and run
Does C++ support threads natively?
How to write a multithreaded application using the native C++ thread feature
Using std::thread in an object-oriented fashion
What did you learn?
Synchronizing threads
What would happen if threads weren't synchronized?
Let's use mutex
What is a deadlock?
Shared mutex
Conditional variable
Semaphore
Concurrency
Asynchronous message passing using the concurrency support library
Concurrency tasks
Using tasks with a thread support library.
How to compile and run
Binding the thread procedure and its input to packaged_task&amp
Exception handling with the concurrency library
Chapter 7: Test-Driven Development
TDD
Common myths and questions around TDD
Does it take more efforts for a developer to write a unit test?&amp
Is code coverage metrics good or bad?
Does TDD work for complex legacy projects?&amp
Is TDD even applicable for embedded or products that involve hardware?
Unit testing frameworks for C++
Google test framework
Installing Google test framework on Ubuntu
How to build google test and mock together as one single static library without installing?
Writing our first test case using the Google test framework
Using Google test framework in Visual Studio IDE
TDD in action
Testing a piece of legacy code that has dependency
Chapter 8: Behavior-Driven Development
Behavior-driven development
TDD versus BDD
C++ BDD frameworks
The Gherkin language
Installing cucumber-cpp&amp
in Ubuntu
Installing the cucumber-cpp framework prerequisite software
Building and executing the test cases
Feature file
Spoken languages supported by Gherkin
The recommended cucumber-cpp project folder structure
Writing our first Cucumber test case
Integrating our project in cucumber-cpp CMakeLists.txt
Executing our test case
Dry running your cucumber test cases
BDD - a test-first development approach
Let's build and run our BDD test case
It's testing time!
Chapter 9: Debugging Techniques
Effective debugging
Debugging strategies
Debugging tools
Debugging your application using GDB
GDB commands quick reference.
Debugging memory leaks with Valgrind
The Memcheck tool
Detecting memory access outside the boundary of an array
Detecting memory access to already released memory locations
Detecting uninitialized memory access
Detecting memory leaks
Fixing the memory leaks
Mismatched use of new and free or malloc and delete
Chapter 10: Code Smells and Clean Code Practices
Code refactoring
Code smell
What is agile?
SOLID design principle
Single responsibility principle
Open closed principle
Liskov substitution principle
Interface segregation
Dependency inversion
Comment smell
Long method
Long parameter list
Duplicate code
Conditional complexity
Large class
Dead code
Primitive obsession
Data class
Feature envy
Index.
Notes:
Includes index.
Description based on online resource; title from PDF title page (ebrary, viewed September 26, 2017).
OCLC:
1005351392

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account