- Copyright 2024
- Edition: 1st
-
Online Video
- ISBN-10: 0-13-691554-X
- ISBN-13: 978-0-13-691554-6
54 hours of video instruction. Includes Modern C++ (C++20, C++17, C++14, and C++11) with a look toward C++23 and C++26.
Overview
C++20 Fundamentals with Paul Deitel is a code-intensive presentation of C++, the worlds most popular language for building high-performance business-critical and mission-critical computing systems.
Related Learning:
- Live Training: Modern C++ Full Throttle with Paul Deitel: Intro to C++20 & the Standard Library by Paul Deitel Presentation-Only Intro to Fundamentals, Arrays, Vectors, Pointers, OOP, Ranges, Views, Functional Programming; Brief Intro to Concepts, Modules & Coroutines: https://learning.oreilly.com/search/?q=paul%20deitel%2C%20%22Modern%20C%2B%2B%20Full%20Throttle%20with%20Paul%20Deitel%3A%20Intro%20to%20C%2B%2B20%20%26%20the%20Standard%20Library%22&type=live-event-series&rows=10
- Live Training: C++20 Big Four Full Throttle with Paul Deitel: Ranges, Concepts, Modules, Coroutines & More with Key C++ 23 Features In-Depth, Presentation-Only Treatment of the Big Four, plus Containers, Iterators, Algorithms, Views, Functional Programming, Templates, Metaprogramming, Concurrency
Description
Intended for programmers with a background in another high-level language, in this video course, youll learn Modern C++ development hands-on using C++20 and its Big Four featuresRanges, Concepts, Modules, and Coroutines. In the context of 200+ hands-on, real-world, Deitel live-code examples, youll quickly master Modern C++ coding idioms using popular compilersMicrosoft Visual C++, GNU g++ and LLVM/Clang clang++.
After the C++ fundamentals quick start, youll move on to C++ standard library containers array and vector; functional-style programming with C++20 Ranges and Views; strings, files and regular expressions; object-oriented programming with classes, inheritance, runtime polymorphism and static polymorphism; operator overloading, copy/move semantics, RAII and smart pointers; exceptions; standard library containers, iterators and algorithms; templates, C++20 Concepts and metaprogramming; C++20 Modules and large-scale development; and concurrency, parallelism, the C++17 and C++20 parallel standard library algorithms and C++20 Coroutines.
Download the C++20 Fundamentals source code from Pauls GitHub repository at https://github.com/pdeitel/CPlusPlus20FundamentalsLiveLessons.
Features include
- Rich coverage of C++20s Big Four: Ranges, Concepts, Modules, and Coroutines
- Objects-Natural Approach: Use standard libraries and open-source libraries to build significant applications with minimal code
- Hundreds of real-world, live-code examples
- Modern C++: C++20, 17, 14, 11 and a look to C++23
- Compilers: Visual C++, GNU g++, Apple Xcode Clang, LLVM/Clang
- Docker: GNU GCC, LLVM/Clang
- Fundamentals: Control statements, functions, strings, references, pointers, files, exceptions
- Object-oriented programming: Classes, objects, inheritance, runtime and static polymorphism, operator overloading, copy/move semantics, RAII, smart pointers
- Functional-style programming: C++20 Ranges and Views, lambda expressions
- Generic programming: Templates, C++20 Concepts and metaprogramming
- C++20 Modules: Large-Scale Development
- Concurrent programming: Concurrency, multithreading, parallel algorithms, C++20 Coroutines, coroutines support libraries
- Future: A look forward to Contracts, range-based parallel algorithms, standard library coroutine support, and more
Skill Level:
Beginner to Intermediate
What you will learn in Part I (of five parts):
- [Updated in 2024] Before You Begin: Get the source code; set up your system for C++ development on Windows, macOS, or Linux; get preconfigured Docker containers; Pauls contact info.
- [Updated in 2024] Lesson 1 Test-Driving a C++ Application: Compile and run a C++ program using Microsoft Visual C++ (Windows), GNU g++ (Windows, macOS, and Linux), and LLVM/Clang clang++ (Windows, macOS, and Linux).
- Lesson 2 Intro to C++ Programming: C++ fundamentals; input/output; fundamental types; arithmetic, equality, and relational operators; if statements; using objects of standard library class string.
- Lesson 3 Control Statement Part 1: if, if...else and nested if...else selection statements; while iteration statement; limitations of the built-in fundamental data types; introduction to the Boost Library and working with super-sized integers.
- Lesson 4 Control Statements, Part 2: for and dowhile iteration statements; C++20 text formatting; switch multiple-selection statement; selection statements with initializers; break and continue statements; logical operators; high-precision monetary calculations with objects of Boost Multiprecision library classes.
- Lesson 5 Functions and an Intro to Function Templates: Custom function definitions; declare functions with function prototypes; key C++ standard library headers; random-number generation for simulation; scoped enums for defining named constants; C++20s using enum declarations; digit separators for more readable numeric literals; inline functions; references and pass-by-reference; default arguments; overloaded functions; function templates; recursion; scopes of identifiers; encryption/decryption case study.
What you will learn in Part II (of five parts):
- Lesson 6 arrays, vectors, Ranges and Functional-Style Programming: C++ standard library class template array; declare, initialize and refer to array elements; range-based for statement; pass arrays to functions; common array manipulations; visualizing array data; sorting; searching; using built-in standard library functions to process arrays; multidimensional arrays; C++20 Ranges and functional-style programming (filter, map, reduce); C++ standard library class template vector.
- Lesson 7 (Downplaying) Pointers in Modern C++: Fundamentals of pointers; pointer declaration/initialization; address-of (&) and indirection (*) pointer operators; pointers vs. references; pass-by-reference with pointers; built-in pointer-based arrays; pointer-based strings; using const with pointers and the data they point to; operator sizeof; pointer expressions & pointer arithmetic; nullptr for pointers to nothing; begin and end library functions; C++ Core Guidelines for avoiding pointers; techniques for avoiding pointers, including C++20s to_array function and C++20s class template span for views into built-in arrays, std::arrays & std::vector
- Lesson 8 strings, string_views, Text Files, CSV Files and Regex: More string-processing features; numeric conversion functions; string_views (lightweight views of contiguous characters); write and read sequential text files; reading and writing quoted strings; string stream processing; raw string literals; Titanic Dataset Data-Science Case Study: Reading and manipulating CSV files; Regular Expressions Case Study: Searching strings for patterns, validating data and transforming data.
What you will learn in Part III (of five parts):
- Lesson 9 Custom Classes: Fundamentals of object-oriented programming; define a custom class and use it to create objects; member functions and data members; data encapsulation with public member functions and private data; constructors for initializing objects; separate a classs interface and implementation; dot (.) and arrow (->) member-access operators; destructors for termination housekeeping; create objects composed of other objects; friend functions and friend classes; this pointer; static data members and member functions; structs for aggregate types; C++20 designated initializers for aggregates.
- Lesson 10 Object-Oriented Programming: Inheritance and Runtime Polymorphism: Traditional and modern inheritance idioms; implementation inheritance vs. interface inheritance; base classes and derived classes; runtime polymorphism with virtual functions; override keyword; final on functions and classes; abstract and concrete classes; virtual functions under the hood; interfaces and dependency injection.
- Lesson 11 Operator Overloading, Copy/Move Semantics and Smart Pointers: Craft valuable custom classes; understand software design issues; string overloaded operators; special member functions; rvalue references, move semantics and moving vs. copying; why you should avoid new and delete; manage dynamic memory with smart pointers; MyArray class; special member functions for copy and move semantics; overloading unary and binary operators; C++20s three-way comparison operator (<=>, also called the spaceship operator), user-defined conversions, using explicit to prevent implicit conversions.
- Lesson 12 Exceptions and a Look Forward to Contracts: Use exception handling for robust business and mission-critical C++ applications; try, catch, throw and the exception handling flow of control; exception safety guarantees and noexcept; stack unwinding and uncaught exceptions; assert macro; failing fast; a look ahead to contracts.
What you will learn in Part IV (of five parts):
- Lesson 13 Standard Library Containers and Iterators: How containers relate to C++20 ranges; I/O stream iterators; use iterators to access container elements; vector, list and deque sequence containers; use ostream_iterators with the std::copy and std::ranges::copy algorithms; set, multiset, map, and multimap ordered associative containers; ordered vs. unordered associative containers; stack, queue and priority_queue container adaptors; bitset near container to manipulate bit flags.
- Lesson 14 Standard Library Algorithms: Standard library algorithms; minimum iterator requirements for working with standard library containers and algorithms; lambda expressions that capture local variables; C++20 std::ranges algorithms; C++20 concepts for the C++20 std::ranges algorithms minimum iterator requirements; compare C++20 std::ranges algorithms with older common-range standard algorithms; use iterators with algorithms to access and manipulate standard library container elements; customize standard library algorithms with lambdas, function pointers and function objects; use projections to transform objects in a range while processing them with C++20 range algorithms; and use C++20 views and lazy evaluation with C++20 ranges.
- Lesson 15 Template, C++20 Concepts and Metaprogramming: Generic programmings rising importance; creating related custom classes via class templates; compile-time vs. runtime polymorphism; C++20 abbreviated function templates with auto; C++20 templated lambdas; C++20 concepts; constraining template parameters with concepts; overloading function templates based on type requirements; type traits for testing type attributes at compile time; testing concepts at compile-time with static_assert; creating a custom concept-constrained algorithm; rebuild the MyArray case study as a custom container class template with custom iterators that work with many standard library algorithms; non-type template parameters; default template arguments; variadic templates with any number of parameters; fold expressions for applying an operation to a variadic template; and compile-time template metaprogramming for improving runtime performance and memory consumption.
What you will learn in Part V (of five parts):
- Lesson 16 C++20 Modules: Large-Scale Development: Introduction to C++20 modules; motivations for modularity; encapsulation with modules; importing standard library headers as header units; primary interface units; exporting declarations from a module; importing modules to use their exported declarations; separating a modules interface from its implementation; module partitions; submodules; visibility vs. reachability of declarations; and how modules can reduce translation unit sizes and compilation times.
- Lesson 17 Parallel Algorithms and Concurrency: A High-Level View: Standard library parallel algorithms; profiling sequential vs. parallel; execution policies; multithreaded programming; thread states and thread life cycle; launching tasks with std::jthread; producerconsumer relationship; synchronizing access to shared mutable data; mutexes, locks, and condition variables; minimizing waits with a circular buffer; cooperatively canceling jthreads; launching tasks with std::async; thread-safe initialization; intro to atomics; coordinating threads with C++20 latches, barriers and semaphores.
- Lesson 18 C++20 Coroutines: What coroutines are and how theyre used; co_yield to suspend a generator coroutine and return a result; co_await operator to suspend a coroutine while it waits for a result to become available; co_return to terminate a coroutine and return its result (or control) to its caller; open-source generator library for creating a generator coroutine with co_yield; open-source concurrencpp library for creating coroutines with co_await and co_return.
- Lesson 19: Stream I/O & C++20 Text formatting: Understand legacy object-oriented stream I/O; character I/O; high-performance unformatted I/O; stream manipulators for octal and hexadecimal integer formats; scientific and fixed-point floating-point formatting; managing format state; alignment and padding; determine success or failure of I/O operations; tie output streams to input streams; and C++20s concise and convenient text-formatting capabilities (presentation types, positional arguments, alignment, numeric formatting, field widths and precisions).
- Lesson 20 Other Topics: Runtime type information (RTTI); inheriting base-class constructors; runtime polymorphism techniques; multiple inheritance; storage classes and storage duration; mutable members in const objects; namespaces; operator keywords; managing shared dynamically allocated objects; determining compile-time types with decltype; [[nodiscard]]; and an intro to several C++23 features.
About Pearson Video Training
Pearson publishes expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. These professional and personal technology videos feature world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, Pearson IT Certification, Sams, and Que. Topics include IT Certification, Network Security, Cisco Technology, Programming, Web Development, Mobile Development, and more. Learn more about Pearson Video training at http://www.informit.com/video.
Table of Contents
Before You Begin
Part I
Lesson 1 Test-Driving a C++ Application
Lesson 2 Intro to C++ Programming
Lesson 3 Control Statement Part 1
Lesson 4 Control Statements, Part 2
Lesson 5 Functions and an Intro to Function Templates
Part II
Lesson 6 arrays, vectors, Ranges and Functional-Style Programming
Lesson 7 (Downplaying) Pointers in Modern C++
Lesson 8 strings, string_views, Text Files, CSV Files and Regex
Part III
Lesson 9 Custom Classes
Lesson 10 Object-Oriented Programming: Inheritance and Runtime Polymorphism
Lesson 11 Operator Overloading, Copy/Move Semantics and Smart Pointers
Lesson 12 Exceptions and a Look Forward to Contracts
Part IV
Lesson 13 Standard Library Containers and Iterators
Lesson 14 Standard Library Algorithms
Lesson 15 Template, C++20 Concepts and Metaprogramming
Part V
Lesson 16 C++20 Modules: Large-Scale Development
Lesson 17 Parallel Algorithms and Concurrency: A High-Level View
Lesson 18 C++20 Coroutines
Lesson 19: Stream I/O & C++20 Text formatting
Lesson 20 Other Topics