Learning Path: Beginning C++

Video description

C++ is a powerful high-level language with a wealth of recently added features that enhance its capabilities, such as auto type declarations, move semantics, lambda expressions, and concurrency support. In this Learning Path, you'll learn how to use those features effectively, resulting in software that is correct, efficient, maintainable, and portable. By the end of this course, you'll have a solid foundation in writing, compiling, and debugging C++ applications, and will be ready to move on to more advanced C++ challenges

Publisher resources

Download Example Code

Table of contents

  1. Introduction
    1. Introduction And Course Overview
    2. A First Look At The Tools Required
    3. About The Author
  2. Your First C++ Program
    1. Creating Your First C++ Program
    2. Installing A C++ Compiler
    3. Compiling And Running Your Program
    4. Introduction To The Main Function Of A C++ Program
    5. Dealing With Program Arguments
    6. Hands On - Enhancing Our Hello World C++ Program
  3. C++ Language Elements
    1. Overview
    2. Primitive Language Data Types
    3. Using Variables
    4. Introduction To Operators And Operator Precedence
    5. Introduction To Control Flow, Part 1
    6. Introduction To Control Flow, Part 2
    7. Statements And Expressions
    8. Using Include Files With Multiple Files
    9. Hands On – Programming A Basic Calculator
  4. Testing C++ Programs
    1. Testing In C++
    2. Introduction To Testing
    3. Introduction To libunittest Testing
    4. Introduction To UnitTest++ Testing
    5. Introduction To Google Test
    6. Hands On - Programming with Tests
  5. Functions
    1. Chapter Overview
    2. A Function Primer
    3. Function Scopes
    4. Unit Testing Functions
    5. Function Best Practices
    6. Hands On – Programming With Functions
  6. Pointers, Arrays, And References
    1. C++ And Memory
    2. C++ Pointers
    3. Allocating And Deallocating Memory
    4. Pointers, References, And Value Types
    5. Pointers In C++11
    6. Hands On – Pointers And Heap Allocation In C++11
  7. Classes, Structs And Object-Oriented Programming
    1. Chapter Overview
    2. Structs And Classes
    3. Using Structs And Classes
    4. Object-Oriented Programming
    5. Namespaces - The C++ Module System
    6. Hands On – Designing With Class - Part 1
    7. Hands On – Designing With Class - Part 2
  8. Templates And Generic Programming
    1. A Motivating Example
    2. Template Functions
    3. Template Classes
    4. Generic Programming Case Study
    5. Hands On – Generic Programming - Part 1
    6. Hands On – Generic Programming - Part 2
  9. The Standard Template Library
    1. Chapter Overview
    2. STL Overview
    3. STL Containers - Part 1
    4. STL Containers - Part 2
    5. STL Iterators
    6. STL Algorithms - Part 1
    7. STL Algorithms - Part 2
    8. Lambdas And Function Objects - Part 1
    9. Lambdas And Function Objects - Part 2
  10. Error Handling In C++
    1. Basic Error Handling
    2. Introduction To Exceptions
    3. Introduction To STL Exceptions
    4. Programming With Exceptions
    5. Hands On – Programming With Exceptions
  11. Makefiles
    1. Anatomy of a Makefile
  12. Conclusion
    1. Wrap Up
  13. Introduction
    1. Introduction
    2. About The Author
    3. Overview Of C++ Best Practices Online Book
    4. Use The Correct Types And Const As Much As Possible
    5. Use The Tools Available
    6. A Note About Optimization
    7. What Are The C++ Core Guidelines
  14. Expressions And Statements
    1. Don't Define A (C-Style) Variadic Function
    2. Prefer A Range-Based For Loop When Possible
    3. Know The Standard Library
    4. Don't Depend On Order Of Evaluation Of Function Arguments
    5. Avoid Casting
    6. Exercise 1 - Chapter 2: Simplify
    7. Exercise 2 - Chapter 2: Use Standard Algorithms
  15. Expressions And Statements - 2
    1. Variable Scopes And Initialization
    2. Properly Initialize Member Variables
    3. Use Lambdas For Complex Initialization, Especially Of Const Variables
    4. Exercise 1 - Chapter 3: Clean Up Object Initialization
    5. Exercise 2 - Chapter 3: Expressions And Statements - Putting It All Together
  16. Resource Management
    1. In Interfaces, Use Raw Pointers To Denote Single Objects Only
    2. Manage Resources Automatically Using Resources Handles And RAII
    3. Avoid Defining Any Default Operations, Or Define Them All
    4. Prefer Stack Objects
    5. Exercise 1 - Chapter 4: Fix Pointer Interface
    6. Exercise 2 - Chapter 4: Implement Scoped Cleanup Object
    7. Exercise 3 - Chapter 4: Consider The Rule Of 0
  17. Resource Management - 2
    1. Don't Use Malloc And Free
    2. Avoid New And Delete
    3. Use unique_ptr Or shared_ptr Correctly
    4. Use std::weak_ptr To Break Cycles
    5. Exercise 1 - Chapter 5: Fix The Memory Error 1
    6. Exercise 2 - Chapter 5: Fix The Memory Error 2
  18. Resource Management - 3
    1. Don't Pass Smart Pointers Unless You Need To Convey Ownership
    2. Avoid Copying Of shared_ptr
    3. Do Not Pass A Pointer Or A Reference Obtained From An Aliased Smart Pointer
    4. Use Standard Containers When Interacting With C APIs
    5. Exercise 1 - Chapter 6: Fix shared_ptr Usage
  19. Conclusion
    1. Expressions And Statements Refresher
    2. Resource Management Refresher
    3. Exercise 1 - Chapter 7: Refactor
    4. Exercise 1 - Chapter 7: Refactor - Solution
    5. Next Steps - Guideline Support Library
    6. Next Steps - Contributing Back
    7. Wrap Up And Thank You

Product information

  • Title: Learning Path: Beginning C++
  • Author(s): Brian Foster
  • Release date: April 2016
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781491960998