Book Image

C++ Fundamentals

By : Antonio Mallia, Francesco Zoffoli
Book Image

C++ Fundamentals

By: Antonio Mallia, Francesco Zoffoli

Overview of this book

C++ Fundamentals begins by introducing you to the C++ compilation model and syntax. You will then study data types, variable declaration, scope, and control flow statements. With the help of this book, you'll be able to compile fully working C++ code and understand how variables, references, and pointers can be used to manipulate the state of the program. Next, you will explore functions and classes — the features that C++ offers to organize a program — and use them to solve more complex problems. You will also understand common pitfalls and modern best practices, especially the ones that diverge from the C++98 guidelines. As you advance through the chapters, you'll study the advantages of generic programming and write your own templates to make generic algorithms that work with any type. This C++ book will guide you in fully exploiting standard containers and algorithms, understanding how to pick the appropriate one for each problem. By the end of this book, you will not only be able to write efficient code but also be equipped to improve the readability, performance, and maintainability of your programs.
Table of Contents (9 chapters)
C++ Fundamentals
Preface

std::optional


optional<T> is a that's used to contain a value that might be present or not.

The class takes a template parameter, T, which represents the type that the std::optional template class might contain. Value type means that the instance of the class contains the value. Copying optional will create a new copy of the contained data.

At any point in the execution of the program, optional<T> either contains nothing, when it's empty, or contains a value of type T.

Optional is defined in the <optional> header.

Let's imagine our application is using a class named User for managing registered users. We would like to have a function that gets us the information of a user from their email: User getUserByEmail(Email email);.

But what happens when a user is not registered? That is, when we can determine that our system does not have the associated User instance?

Some would suggest throwing an exception. In C++, exceptions are used for exceptional situations, ones that should almost...