- [Instructor] Welcome to C++ Essential Training.
The goal of this course
is to give you the most essential skills
to become proficient in standard C++.
C++ is a big subject
that includes many topics.
Here are some of the topics covered in this course.
The basic syntax of C++
is mostly inherited from the C language.
We'll cover this in chapters two through five.
This includes a thorough discussion of data types,
standard operators and functions.
With a few exceptions, most of this is inherited from C.
Classes and objects form the basis
of object-oriented programming in C++.
This course will cover the basics of classes and objects.
The companion course, C++: Advanced Topics,
foes into much more detail.
C++ provides a powerful
generic programing framework called Templates.
A fundamental understanding of templates is important
and we will cover the basics here.
The companion course, C++ Templates and the STL,
covers further details.
The Standard Template Library
is a comprehensive library
of containers and algorithms
that makes extensive use of C++ templates.
Again, we'll cover the basics here
and the companion course,
C++ Templates and the STL, goes into greater detail.
Because of the interdependent nature
of the different parts of C++,
this course uses a language emersion approach.
You'll learn by using the language.
You're encouraged to experiment often
and to make mistakes and learn from them.
You'll often use features
which have not yet been fully explained
and this is necessary
as many parts of the language
and libraries are interdependent.
Try not to worry about it.
These features will be explained in time.
You do not need to have any previous programming experience
to learn C++.
In fact, back when I was first learning in the early '70s,
my first language was C.
So take your time,
pause and rewind the lessons if you need to.
There's no ideal pace to learn.
Each of us learns at a different pace
and the best pace to learn
is the pace at which you learn best.
The examples in this course are all console applications.
This allows us to focus on the C++ language itself
without distraction from the unique requirements
of the various graphical user interfaces
of different operating systems.
Every operating system, including both Mac and Windows
are capable of running standard C++ console applications.
If you have previous experience with C++,
you may notice I tend to avoid cout when I don't need it.
There's several reasons for this.
Cout is part of the Standard Template Library, or STL.
Before we introduce the STL,
it's important to understand the language sufficiently,
particularly the templates feature,
which is essential to STL.
Most language features do not require the STL
and it's much easier to learn these features
without wrapping them in unnecessary complexity.
Even within the context of the STL,
cout is rarely used as an object
and its unique use of operators
is unlike anything else in the language.
So we'll cover these distinctions later in the course.
Cout, puts and printf are all part of the C++ standard.
Printf is used for formatting text.
It's small and fast
and I tend to value small and fast
and I prefer it's function-based syntax
over the non-standard cout interface.
The next version of the C++ standard, C++20,
will include a new formatting library,
similar to Python's format method,
which could be the best of both worlds.
Unfortunately, as of the time of this recording,
the new formatting library is not available
in any production compilers.
This prevents us from using it for this course.
At the end of this course,
you'll be invited to complete a final project
to exercise the knowledge you've learned in the course.
I sincerely hope that you'll use this opportunity
to put together all the pieces you've learned.
As with the rest of the course, take your time,
experiment, make mistakes and enjoy the journey.