2 options
Mastering C++ Programming : Modern C++ 17 at your fingertips / Jeganathan Swaminathan.
- 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&
- #160
- Simplified static_assert&
- 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&
- containers
- Array
- Code walkthrough
- Commonly used APIs in an array
- Vector&
- Commonly used vector APIs
- Pitfalls of a vector
- List&
- 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&
- 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&
- 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&
- 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?&
- Is code coverage metrics good or bad?
- Does TDD work for complex legacy projects?&
- 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&
- 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.