| Site Index | https://www.learncpp.com/learn-cpp-site-index/ |
| Latest Changes | https://www.learncpp.com/latest-changes/ |
| About | https://www.learncpp.com/about/ |
| Leave feedback | https://www.learncpp.com/leave-feedback-report-issue/ |
| Report an issue | https://www.learncpp.com/leave-feedback-report-issue/ |
| Contact / Support | https://www.learncpp.com/about/ |
| Site FAQ | https://learncpp.com/cpp-tutorial/introduction-to-these-tutorials#FAQ |
| Privacy Policy | https://g.ezoic.net/privacy/learncpp.com |
| Donate | https://www.learncpp.com/about/ |
| | https://darkreader.org/ |
| Search | https://learncpp.com/ |
| https://www.learncpp.com/ |
| Learn C++ | https://www.learncpp.com/ |
| Skip to content | https://learncpp.com/#main |
| Site Index | https://www.learncpp.com/learn-cpp-site-index/ |
| Latest Changes | https://www.learncpp.com/latest-changes/ |
| About | https://www.learncpp.com/about/ |
| Leave feedback | https://www.learncpp.com/leave-feedback-report-issue/ |
| Report an issue | https://www.learncpp.com/leave-feedback-report-issue/ |
| Contact / Support | https://www.learncpp.com/about/ |
| Site FAQ | https://learncpp.com/cpp-tutorial/introduction-to-these-tutorials#FAQ |
| Privacy Policy | https://g.ezoic.net/privacy/learncpp.com |
| Donate | https://www.learncpp.com/about/ |
| | https://darkreader.org/ |
| Search | https://learncpp.com/ |
| Introduction to these tutorials | https://www.learncpp.com/cpp-tutorial/introduction-to-these-tutorials/ |
| Introduction to programs and programming languages | https://www.learncpp.com/cpp-tutorial/introduction-to-programming-languages/ |
| Introduction to C/C++ | https://www.learncpp.com/cpp-tutorial/introduction-to-cplusplus/ |
| Introduction to C++ development | https://www.learncpp.com/cpp-tutorial/introduction-to-cpp-development/ |
| Introduction to the compiler, linker, and libraries | https://www.learncpp.com/cpp-tutorial/introduction-to-the-compiler-linker-and-libraries/ |
| Installing an Integrated Development Environment (IDE) | https://www.learncpp.com/cpp-tutorial/installing-an-integrated-development-environment-ide/ |
| Compiling your first program | https://www.learncpp.com/cpp-tutorial/compiling-your-first-program/ |
| A few common C++ problems | https://www.learncpp.com/cpp-tutorial/a-few-common-cpp-problems/ |
| Configuring your compiler: Build configurations | https://www.learncpp.com/cpp-tutorial/configuring-your-compiler-build-configurations/ |
| Configuring your compiler: Compiler extensions | https://www.learncpp.com/cpp-tutorial/configuring-your-compiler-compiler-extensions/ |
| Configuring your compiler: Warning and error levels | https://www.learncpp.com/cpp-tutorial/configuring-your-compiler-warning-and-error-levels/ |
| Configuring your compiler: Choosing a language standard | https://www.learncpp.com/cpp-tutorial/configuring-your-compiler-choosing-a-language-standard/ |
| What language standard is my compiler using? | https://www.learncpp.com/cpp-tutorial/what-language-standard-is-my-compiler-using/ |
| Statements and the structure of a program | https://www.learncpp.com/cpp-tutorial/statements-and-the-structure-of-a-program/ |
| Comments | https://www.learncpp.com/cpp-tutorial/comments/ |
| Introduction to objects and variables | https://www.learncpp.com/cpp-tutorial/introduction-to-objects-and-variables/ |
| Variable assignment and initialization | https://www.learncpp.com/cpp-tutorial/variable-assignment-and-initialization/ |
| Introduction to iostream: cout, cin, and endl | https://www.learncpp.com/cpp-tutorial/introduction-to-iostream-cout-cin-and-endl/ |
| Uninitialized variables and undefined behavior | https://www.learncpp.com/cpp-tutorial/uninitialized-variables-and-undefined-behavior/ |
| Keywords and naming identifiers | https://www.learncpp.com/cpp-tutorial/keywords-and-naming-identifiers/ |
| Whitespace and basic formatting | https://www.learncpp.com/cpp-tutorial/whitespace-and-basic-formatting/ |
| Introduction to literals and operators | https://www.learncpp.com/cpp-tutorial/introduction-to-literals-and-operators/ |
| Introduction to expressions | https://www.learncpp.com/cpp-tutorial/introduction-to-expressions/ |
| Developing your first program | https://www.learncpp.com/cpp-tutorial/developing-your-first-program/ |
| Chapter 1 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-1-summary-and-quiz/ |
| Introduction to functions | https://www.learncpp.com/cpp-tutorial/introduction-to-functions/ |
| Function return values (value-returning functions) | https://www.learncpp.com/cpp-tutorial/function-return-values-value-returning-functions/ |
| Void functions (non-value returning functions) | https://www.learncpp.com/cpp-tutorial/void-functions-non-value-returning-functions/ |
| Introduction to function parameters and arguments | https://www.learncpp.com/cpp-tutorial/introduction-to-function-parameters-and-arguments/ |
| Introduction to local scope | https://www.learncpp.com/cpp-tutorial/introduction-to-local-scope/ |
| Why functions are useful, and how to use them effectively | https://www.learncpp.com/cpp-tutorial/why-functions-are-useful-and-how-to-use-them-effectively/ |
| Forward declarations and definitions | https://www.learncpp.com/cpp-tutorial/forward-declarations/ |
| Programs with multiple code files | https://www.learncpp.com/cpp-tutorial/programs-with-multiple-code-files/ |
| Naming collisions and an introduction to namespaces | https://www.learncpp.com/cpp-tutorial/naming-collisions-and-an-introduction-to-namespaces/ |
| Introduction to the preprocessor | https://www.learncpp.com/cpp-tutorial/introduction-to-the-preprocessor/ |
| Header files | https://www.learncpp.com/cpp-tutorial/header-files/ |
| Header guards | https://www.learncpp.com/cpp-tutorial/header-guards/ |
| How to design your first programs | https://www.learncpp.com/cpp-tutorial/how-to-design-your-first-programs/ |
| Chapter 2 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-2-summary-and-quiz/ |
| Syntax and semantic errors | https://www.learncpp.com/cpp-tutorial/syntax-and-semantic-errors/ |
| The debugging process | https://www.learncpp.com/cpp-tutorial/the-debugging-process/ |
| A strategy for debugging | https://www.learncpp.com/cpp-tutorial/a-strategy-for-debugging/ |
| Basic debugging tactics | https://www.learncpp.com/cpp-tutorial/basic-debugging-tactics/ |
| More debugging tactics | https://www.learncpp.com/cpp-tutorial/more-debugging-tactics/ |
| Using an integrated debugger: Stepping | https://www.learncpp.com/cpp-tutorial/using-an-integrated-debugger-stepping/ |
| Using an integrated debugger: Running and breakpoints | https://www.learncpp.com/cpp-tutorial/using-an-integrated-debugger-running-and-breakpoints/ |
| Using an integrated debugger: Watching variables | https://www.learncpp.com/cpp-tutorial/using-an-integrated-debugger-watching-variables/ |
| Using an integrated debugger: The call stack | https://www.learncpp.com/cpp-tutorial/using-an-integrated-debugger-the-call-stack/ |
| Finding issues before they become problems | https://www.learncpp.com/cpp-tutorial/finding-issues-before-they-become-problems/ |
| Chapter 3 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-3-summary-and-quiz/ |
| Introduction to fundamental data types | https://www.learncpp.com/cpp-tutorial/introduction-to-fundamental-data-types/ |
| Void | https://www.learncpp.com/cpp-tutorial/void/ |
| Object sizes and the sizeof operator | https://www.learncpp.com/cpp-tutorial/object-sizes-and-the-sizeof-operator/ |
| Signed integers | https://www.learncpp.com/cpp-tutorial/signed-integers/ |
| Unsigned integers, and why to avoid them | https://www.learncpp.com/cpp-tutorial/unsigned-integers-and-why-to-avoid-them/ |
| Fixed-width integers and size_t | https://www.learncpp.com/cpp-tutorial/fixed-width-integers-and-size-t/ |
| Introduction to scientific notation | https://www.learncpp.com/cpp-tutorial/introduction-to-scientific-notation/ |
| Floating point numbers | https://www.learncpp.com/cpp-tutorial/floating-point-numbers/ |
| Boolean values | https://www.learncpp.com/cpp-tutorial/boolean-values/ |
| Introduction to if statements | https://www.learncpp.com/cpp-tutorial/introduction-to-if-statements/ |
| Chars | https://www.learncpp.com/cpp-tutorial/chars/ |
| Introduction to type conversion and static_cast | https://www.learncpp.com/cpp-tutorial/introduction-to-type-conversion-and-static_cast/ |
| Chapter 4 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-4-summary-and-quiz/ |
| Constant variables (named constants) | https://www.learncpp.com/cpp-tutorial/constant-variables-named-constants/ |
| Literals | https://www.learncpp.com/cpp-tutorial/literals/ |
| Numeral systems (decimal, binary, hexadecimal, and octal) | https://www.learncpp.com/cpp-tutorial/numeral-systems-decimal-binary-hexadecimal-and-octal/ |
| The as-if rule and compile-time optimization | https://www.learncpp.com/cpp-tutorial/the-as-if-rule-and-compile-time-optimization/ |
| Constant expressions | https://www.learncpp.com/cpp-tutorial/constant-expressions/ |
| Constexpr variables | https://www.learncpp.com/cpp-tutorial/constexpr-variables/ |
| Introduction to std::string | https://www.learncpp.com/cpp-tutorial/introduction-to-stdstring/ |
| Introduction to std::string_view | https://www.learncpp.com/cpp-tutorial/introduction-to-stdstring_view/ |
| std::string_view (part 2) | https://www.learncpp.com/cpp-tutorial/stdstring_view-part-2/ |
| Chapter 5 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-5-summary-and-quiz/ |
| Operator precedence and associativity | https://www.learncpp.com/cpp-tutorial/operator-precedence-and-associativity/ |
| Arithmetic operators | https://www.learncpp.com/cpp-tutorial/arithmetic-operators/ |
| Remainder and Exponentiation | https://www.learncpp.com/cpp-tutorial/remainder-and-exponentiation/ |
| Increment/decrement operators, and side effects | https://www.learncpp.com/cpp-tutorial/increment-decrement-operators-and-side-effects/ |
| The comma operator | https://www.learncpp.com/cpp-tutorial/the-comma-operator/ |
| The conditional operator | https://www.learncpp.com/cpp-tutorial/the-conditional-operator/ |
| Relational operators and floating point comparisons | https://www.learncpp.com/cpp-tutorial/relational-operators-and-floating-point-comparisons/ |
| Logical operators | https://www.learncpp.com/cpp-tutorial/logical-operators/ |
| Chapter 6 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-6-summary-and-quiz/ |
| Bit flags and bit manipulation via std::bitset | https://www.learncpp.com/cpp-tutorial/bit-flags-and-bit-manipulation-via-stdbitset/ |
| Bitwise operators | https://www.learncpp.com/cpp-tutorial/bitwise-operators/ |
| Bit manipulation with bitwise operators and bit masks | https://www.learncpp.com/cpp-tutorial/bit-manipulation-with-bitwise-operators-and-bit-masks/ |
| Converting integers between binary and decimal representation | https://www.learncpp.com/cpp-tutorial/converting-integers-between-binary-and-decimal-representation/ |
| Compound statements (blocks) | https://www.learncpp.com/cpp-tutorial/compound-statements-blocks/ |
| User-defined namespaces and the scope resolution operator | https://www.learncpp.com/cpp-tutorial/user-defined-namespaces-and-the-scope-resolution-operator/ |
| Local variables | https://www.learncpp.com/cpp-tutorial/local-variables/ |
| Introduction to global variables | https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables/ |
| Variable shadowing (name hiding) | https://www.learncpp.com/cpp-tutorial/variable-shadowing-name-hiding/ |
| Internal linkage | https://www.learncpp.com/cpp-tutorial/internal-linkage/ |
| External linkage and variable forward declarations | https://www.learncpp.com/cpp-tutorial/external-linkage-and-variable-forward-declarations/ |
| Why (non-const) global variables are evil | https://www.learncpp.com/cpp-tutorial/why-non-const-global-variables-are-evil/ |
| Inline functions and variables | https://www.learncpp.com/cpp-tutorial/inline-functions-and-variables/ |
| Sharing global constants across multiple files (using inline variables) | https://www.learncpp.com/cpp-tutorial/sharing-global-constants-across-multiple-files-using-inline-variables/ |
| Static local variables | https://www.learncpp.com/cpp-tutorial/static-local-variables/ |
| Scope, duration, and linkage summary | https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/ |
| Using declarations and using directives | https://www.learncpp.com/cpp-tutorial/using-declarations-and-using-directives/ |
| Unnamed and inline namespaces | https://www.learncpp.com/cpp-tutorial/unnamed-and-inline-namespaces/ |
| Chapter 7 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-7-summary-and-quiz/ |
| Control flow introduction | https://www.learncpp.com/cpp-tutorial/control-flow-introduction/ |
| If statements and blocks | https://www.learncpp.com/cpp-tutorial/if-statements-and-blocks/ |
| Common if statement problems | https://www.learncpp.com/cpp-tutorial/common-if-statement-problems/ |
| Constexpr if statements | https://www.learncpp.com/cpp-tutorial/constexpr-if-statements/ |
| Switch statement basics | https://www.learncpp.com/cpp-tutorial/switch-statement-basics/ |
| Switch fallthrough and scoping | https://www.learncpp.com/cpp-tutorial/switch-fallthrough-and-scoping/ |
| Goto statements | https://www.learncpp.com/cpp-tutorial/goto-statements/ |
| Introduction to loops and while statements | https://www.learncpp.com/cpp-tutorial/introduction-to-loops-and-while-statements/ |
| Do while statements | https://www.learncpp.com/cpp-tutorial/do-while-statements/ |
| For statements | https://www.learncpp.com/cpp-tutorial/for-statements/ |
| Break and continue | https://www.learncpp.com/cpp-tutorial/break-and-continue/ |
| Halts (exiting your program early) | https://www.learncpp.com/cpp-tutorial/halts-exiting-your-program-early/ |
| Introduction to random number generation | https://www.learncpp.com/cpp-tutorial/introduction-to-random-number-generation/ |
| Generating random numbers using Mersenne Twister | https://www.learncpp.com/cpp-tutorial/generating-random-numbers-using-mersenne-twister/ |
| Global random numbers (Random.h) | https://www.learncpp.com/cpp-tutorial/global-random-numbers-random-h/ |
| Chapter 8 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-8-summary-and-quiz/ |
| Introduction to testing your code | https://www.learncpp.com/cpp-tutorial/introduction-to-testing-your-code/ |
| Code coverage | https://www.learncpp.com/cpp-tutorial/code-coverage/ |
| Common semantic errors in C++ | https://www.learncpp.com/cpp-tutorial/common-semantic-errors-in-c/ |
| Detecting and handling errors | https://www.learncpp.com/cpp-tutorial/detecting-and-handling-errors/ |
| std::cin and handling invalid input | https://www.learncpp.com/cpp-tutorial/stdcin-and-handling-invalid-input/ |
| Assert and static_assert | https://www.learncpp.com/cpp-tutorial/assert-and-static_assert/ |
| Chapter 9 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-9-summary-and-quiz/ |
| Implicit type conversion | https://www.learncpp.com/cpp-tutorial/implicit-type-conversion/ |
| Floating-point and integral promotion | https://www.learncpp.com/cpp-tutorial/floating-point-and-integral-promotion/ |
| Numeric conversions | https://www.learncpp.com/cpp-tutorial/numeric-conversions/ |
| Narrowing conversions, list initialization, and constexpr initializers | https://www.learncpp.com/cpp-tutorial/narrowing-conversions-list-initialization-and-constexpr-initializers/ |
| Arithmetic conversions | https://www.learncpp.com/cpp-tutorial/arithmetic-conversions/ |
| Explicit type conversion (casting) and static_cast | https://www.learncpp.com/cpp-tutorial/explicit-type-conversion-casting-and-static-cast/ |
| Typedefs and type aliases | https://www.learncpp.com/cpp-tutorial/typedefs-and-type-aliases/ |
| Type deduction for objects using the auto keyword | https://www.learncpp.com/cpp-tutorial/type-deduction-for-objects-using-the-auto-keyword/ |
| Type deduction for functions | https://www.learncpp.com/cpp-tutorial/type-deduction-for-functions/ |
| Chapter 10 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-10-summary-and-quiz/ |
| Introduction to function overloading | https://www.learncpp.com/cpp-tutorial/introduction-to-function-overloading/ |
| Function overload differentiation | https://www.learncpp.com/cpp-tutorial/function-overload-differentiation/ |
| Function overload resolution and ambiguous matches | https://www.learncpp.com/cpp-tutorial/function-overload-resolution-and-ambiguous-matches/ |
| Deleting functions | https://www.learncpp.com/cpp-tutorial/deleting-functions/ |
| Default arguments | https://www.learncpp.com/cpp-tutorial/default-arguments/ |
| Function templates | https://www.learncpp.com/cpp-tutorial/function-templates/ |
| Function template instantiation | https://www.learncpp.com/cpp-tutorial/function-template-instantiation/ |
| Function templates with multiple template types | https://www.learncpp.com/cpp-tutorial/function-templates-with-multiple-template-types/ |
| Non-type template parameters | https://www.learncpp.com/cpp-tutorial/non-type-template-parameters/ |
| Using function templates in multiple files | https://www.learncpp.com/cpp-tutorial/using-function-templates-in-multiple-files/ |
| Chapter 11 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-11-summary-and-quiz/ |
| Constexpr functions | https://www.learncpp.com/cpp-tutorial/constexpr-functions/ |
| Constexpr functions (part 2) | https://www.learncpp.com/cpp-tutorial/constexpr-functions-part-2/ |
| Constexpr functions (part 3) and consteval | https://www.learncpp.com/cpp-tutorial/constexpr-functions-part-3-and-consteval/ |
| Constexpr functions (part 4) | https://www.learncpp.com/cpp-tutorial/constexpr-functions-part-4/ |
| Chapter F summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-f-summary-and-quiz/ |
| Introduction to compound data types | https://www.learncpp.com/cpp-tutorial/introduction-to-compound-data-types/ |
| Value categories (lvalues and rvalues) | https://www.learncpp.com/cpp-tutorial/value-categories-lvalues-and-rvalues/ |
| Lvalue references | https://www.learncpp.com/cpp-tutorial/lvalue-references/ |
| Lvalue references to const | https://www.learncpp.com/cpp-tutorial/lvalue-references-to-const/ |
| Pass by lvalue reference | https://www.learncpp.com/cpp-tutorial/pass-by-lvalue-reference/ |
| Pass by const lvalue reference | https://www.learncpp.com/cpp-tutorial/pass-by-const-lvalue-reference/ |
| Introduction to pointers | https://www.learncpp.com/cpp-tutorial/introduction-to-pointers/ |
| Null pointers | https://www.learncpp.com/cpp-tutorial/null-pointers/ |
| Pointers and const | https://www.learncpp.com/cpp-tutorial/pointers-and-const/ |
| Pass by address | https://www.learncpp.com/cpp-tutorial/pass-by-address/ |
| Pass by address (part 2) | https://www.learncpp.com/cpp-tutorial/pass-by-address-part-2/ |
| Return by reference and return by address | https://www.learncpp.com/cpp-tutorial/return-by-reference-and-return-by-address/ |
| In and out parameters | https://www.learncpp.com/cpp-tutorial/in-and-out-parameters/ |
| Type deduction with pointers, references, and const | https://www.learncpp.com/cpp-tutorial/type-deduction-with-pointers-references-and-const/ |
| std::optional | https://www.learncpp.com/cpp-tutorial/stdoptional/ |
| Chapter 12 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-12-summary-and-quiz/ |
| Introduction to program-defined (user-defined) types | https://www.learncpp.com/cpp-tutorial/introduction-to-program-defined-user-defined-types/ |
| Unscoped enumerations | https://www.learncpp.com/cpp-tutorial/unscoped-enumerations/ |
| Unscoped enumerator integral conversions | https://www.learncpp.com/cpp-tutorial/unscoped-enumerator-integral-conversions/ |
| Converting an enumeration to and from a string | https://www.learncpp.com/cpp-tutorial/converting-an-enumeration-to-and-from-a-string/ |
| Introduction to overloading the I/O operators | https://www.learncpp.com/cpp-tutorial/introduction-to-overloading-the-i-o-operators/ |
| Scoped enumerations (enum classes) | https://www.learncpp.com/cpp-tutorial/scoped-enumerations-enum-classes/ |
| Introduction to structs, members, and member selection | https://www.learncpp.com/cpp-tutorial/introduction-to-structs-members-and-member-selection/ |
| Struct aggregate initialization | https://www.learncpp.com/cpp-tutorial/struct-aggregate-initialization/ |
| Default member initialization | https://www.learncpp.com/cpp-tutorial/default-member-initialization/ |
| Passing and returning structs | https://www.learncpp.com/cpp-tutorial/passing-and-returning-structs/ |
| Struct miscellany | https://www.learncpp.com/cpp-tutorial/struct-miscellany/ |
| Member selection with pointers and references | https://www.learncpp.com/cpp-tutorial/member-selection-with-pointers-and-references/ |
| Class templates | https://www.learncpp.com/cpp-tutorial/class-templates/ |
| Class template argument deduction (CTAD) and deduction guides | https://www.learncpp.com/cpp-tutorial/class-template-argument-deduction-ctad-and-deduction-guides/ |
| Alias templates | https://www.learncpp.com/cpp-tutorial/alias-templates/ |
| Chapter 13 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-13-summary-and-quiz/ |
| Using a language reference | https://www.learncpp.com/cpp-tutorial/using-a-language-reference/ |
| Introduction to object-oriented programming | https://www.learncpp.com/cpp-tutorial/introduction-to-object-oriented-programming/ |
| Introduction to classes | https://www.learncpp.com/cpp-tutorial/introduction-to-classes/ |
| Member functions | https://www.learncpp.com/cpp-tutorial/member-functions/ |
| Const class objects and const member functions | https://www.learncpp.com/cpp-tutorial/const-class-objects-and-const-member-functions/ |
| Public and private members and access specifiers | https://www.learncpp.com/cpp-tutorial/public-and-private-members-and-access-specifiers/ |
| Access functions | https://www.learncpp.com/cpp-tutorial/access-functions/ |
| Member functions returning references to data members | https://www.learncpp.com/cpp-tutorial/member-functions-returning-references-to-data-members/ |
| The benefits of data hiding (encapsulation) | https://www.learncpp.com/cpp-tutorial/the-benefits-of-data-hiding-encapsulation/ |
| Introduction to constructors | https://www.learncpp.com/cpp-tutorial/introduction-to-constructors/ |
| Constructor member initializer lists | https://www.learncpp.com/cpp-tutorial/constructor-member-initializer-lists/ |
| Default constructors and default arguments | https://www.learncpp.com/cpp-tutorial/default-constructors-and-default-arguments/ |
| Delegating constructors | https://www.learncpp.com/cpp-tutorial/delegating-constructors/ |
| Temporary class objects | https://www.learncpp.com/cpp-tutorial/temporary-class-objects/ |
| Introduction to the copy constructor | https://www.learncpp.com/cpp-tutorial/introduction-to-the-copy-constructor/ |
| Class initialization and copy elision | https://www.learncpp.com/cpp-tutorial/class-initialization-and-copy-elision/ |
| Converting constructors and the explicit keyword | https://www.learncpp.com/cpp-tutorial/converting-constructors-and-the-explicit-keyword/ |
| Constexpr aggregates and classes | https://www.learncpp.com/cpp-tutorial/constexpr-aggregates-and-classes/ |
| Chapter 14 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-14-summary-and-quiz/ |
| The hidden “this” pointer and member function chaining | https://www.learncpp.com/cpp-tutorial/the-hidden-this-pointer-and-member-function-chaining/ |
| Classes and header files | https://www.learncpp.com/cpp-tutorial/classes-and-header-files/ |
| Nested types (member types) | https://www.learncpp.com/cpp-tutorial/nested-types-member-types/ |
| Introduction to destructors | https://www.learncpp.com/cpp-tutorial/introduction-to-destructors/ |
| Class templates with member functions | https://www.learncpp.com/cpp-tutorial/class-templates-with-member-functions/ |
| Static member variables | https://www.learncpp.com/cpp-tutorial/static-member-variables/ |
| Static member functions | https://www.learncpp.com/cpp-tutorial/static-member-functions/ |
| Friend non-member functions | https://www.learncpp.com/cpp-tutorial/friend-non-member-functions/ |
| Friend classes and friend member functions | https://www.learncpp.com/cpp-tutorial/friend-classes-and-friend-member-functions/ |
| Ref qualifiers | https://www.learncpp.com/cpp-tutorial/ref-qualifiers/ |
| Chapter 15 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-15-summary-and-quiz/ |
| Introduction to containers and arrays | https://www.learncpp.com/cpp-tutorial/introduction-to-containers-and-arrays/ |
| Introduction to std::vector and list constructors | https://www.learncpp.com/cpp-tutorial/introduction-to-stdvector-and-list-constructors/ |
| std::vector and the unsigned length and subscript problem | https://www.learncpp.com/cpp-tutorial/stdvector-and-the-unsigned-length-and-subscript-problem/ |
| Passing std::vector | https://www.learncpp.com/cpp-tutorial/passing-stdvector/ |
| Returning std::vector, and an introduction to move semantics | https://www.learncpp.com/cpp-tutorial/returning-stdvector-and-an-introduction-to-move-semantics/ |
| Arrays and loops | https://www.learncpp.com/cpp-tutorial/arrays-and-loops/ |
| Arrays, loops, and sign challenge solutions | https://www.learncpp.com/cpp-tutorial/arrays-loops-and-sign-challenge-solutions/ |
| Range-based for loops (for-each) | https://www.learncpp.com/cpp-tutorial/range-based-for-loops-for-each/ |
| Array indexing and length using enumerators | https://www.learncpp.com/cpp-tutorial/array-indexing-and-length-using-enumerators/ |
| std::vector resizing and capacity | https://www.learncpp.com/cpp-tutorial/stdvector-resizing-and-capacity/ |
| std::vector and stack behavior | https://www.learncpp.com/cpp-tutorial/stdvector-and-stack-behavior/ |
| std::vector | https://www.learncpp.com/cpp-tutorial/stdvector-bool/ |
| Chapter 16 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-16-summary-and-quiz/ |
| Introduction to std::array | https://www.learncpp.com/cpp-tutorial/introduction-to-stdarray/ |
| std::array length and indexing | https://www.learncpp.com/cpp-tutorial/stdarray-length-and-indexing/ |
| Passing and returning std::array | https://www.learncpp.com/cpp-tutorial/passing-and-returning-stdarray/ |
| std::array of class types, and brace elision | https://www.learncpp.com/cpp-tutorial/stdarray-of-class-types-and-brace-elision/ |
| Arrays of references via std::reference_wrapper | https://www.learncpp.com/cpp-tutorial/arrays-of-references-via-stdreference_wrapper/ |
| std::array and enumerations | https://www.learncpp.com/cpp-tutorial/stdarray-and-enumerations/ |
| Introduction to C-style arrays | https://www.learncpp.com/cpp-tutorial/introduction-to-c-style-arrays/ |
| C-style array decay | https://www.learncpp.com/cpp-tutorial/c-style-array-decay/ |
| Pointer arithmetic and subscripting | https://www.learncpp.com/cpp-tutorial/pointer-arithmetic-and-subscripting/ |
| C-style strings | https://www.learncpp.com/cpp-tutorial/c-style-strings/ |
| C-style string symbolic constants | https://www.learncpp.com/cpp-tutorial/c-style-string-symbolic-constants/ |
| Multidimensional C-style Arrays | https://www.learncpp.com/cpp-tutorial/multidimensional-c-style-arrays/ |
| Multidimensional std::array | https://www.learncpp.com/cpp-tutorial/multidimensional-stdarray/ |
| Chapter 17 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-17-summary-and-quiz/ |
| Sorting an array using selection sort | https://www.learncpp.com/cpp-tutorial/sorting-an-array-using-selection-sort/ |
| Introduction to iterators | https://www.learncpp.com/cpp-tutorial/introduction-to-iterators/ |
| Introduction to standard library algorithms | https://www.learncpp.com/cpp-tutorial/introduction-to-standard-library-algorithms/ |
| Timing your code | https://www.learncpp.com/cpp-tutorial/timing-your-code/ |
| Dynamic memory allocation with new and delete | https://www.learncpp.com/cpp-tutorial/dynamic-memory-allocation-with-new-and-delete/ |
| Dynamically allocating arrays | https://www.learncpp.com/cpp-tutorial/dynamically-allocating-arrays/ |
| Destructors | https://www.learncpp.com/cpp-tutorial/destructors/ |
| Pointers to pointers and dynamic multidimensional arrays | https://www.learncpp.com/cpp-tutorial/pointers-to-pointers/ |
| Void pointers | https://www.learncpp.com/cpp-tutorial/void-pointers/ |
| Function Pointers | https://www.learncpp.com/cpp-tutorial/function-pointers/ |
| The stack and the heap | https://www.learncpp.com/cpp-tutorial/the-stack-and-the-heap/ |
| Recursion | https://www.learncpp.com/cpp-tutorial/recursion/ |
| Command line arguments | https://www.learncpp.com/cpp-tutorial/command-line-arguments/ |
| Ellipsis (and why to avoid them) | https://www.learncpp.com/cpp-tutorial/ellipsis-and-why-to-avoid-them/ |
| Introduction to lambdas (anonymous functions) | https://www.learncpp.com/cpp-tutorial/introduction-to-lambdas-anonymous-functions/ |
| Lambda captures | https://www.learncpp.com/cpp-tutorial/lambda-captures/ |
| Chapter 20 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-20-summary-and-quiz/ |
| Introduction to operator overloading | https://www.learncpp.com/cpp-tutorial/introduction-to-operator-overloading/ |
| Overloading the arithmetic operators using friend functions | https://www.learncpp.com/cpp-tutorial/overloading-the-arithmetic-operators-using-friend-functions/ |
| Overloading operators using normal functions | https://www.learncpp.com/cpp-tutorial/overloading-operators-using-normal-functions/ |
| Overloading the I/O operators | https://www.learncpp.com/cpp-tutorial/overloading-the-io-operators/ |
| Overloading operators using member functions | https://www.learncpp.com/cpp-tutorial/overloading-operators-using-member-functions/ |
| Overloading unary operators +, -, and ! | https://www.learncpp.com/cpp-tutorial/overloading-unary-operators/ |
| Overloading the comparison operators | https://www.learncpp.com/cpp-tutorial/overloading-the-comparison-operators/ |
| Overloading the increment and decrement operators | https://www.learncpp.com/cpp-tutorial/overloading-the-increment-and-decrement-operators/ |
| Overloading the subscript operator | https://www.learncpp.com/cpp-tutorial/overloading-the-subscript-operator/ |
| Overloading the parenthesis operator | https://www.learncpp.com/cpp-tutorial/overloading-the-parenthesis-operator/ |
| Overloading typecasts | https://www.learncpp.com/cpp-tutorial/overloading-typecasts/ |
| Overloading the assignment operator | https://www.learncpp.com/cpp-tutorial/overloading-the-assignment-operator/ |
| Shallow vs. deep copying | https://www.learncpp.com/cpp-tutorial/shallow-vs-deep-copying/ |
| Overloading operators and function templates | https://www.learncpp.com/cpp-tutorial/overloading-operators-and-function-templates/ |
| Chapter 21 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-21-summary-and-quiz/ |
| Chapter 21 project | https://www.learncpp.com/cpp-tutorial/chapter-21-project/ |
| Introduction to smart pointers and move semantics | https://www.learncpp.com/cpp-tutorial/introduction-to-smart-pointers-move-semantics/ |
| R-value references | https://www.learncpp.com/cpp-tutorial/rvalue-references/ |
| Move constructors and move assignment | https://www.learncpp.com/cpp-tutorial/move-constructors-and-move-assignment/ |
| std::move | https://www.learncpp.com/cpp-tutorial/stdmove/ |
| std::unique_ptr | https://www.learncpp.com/cpp-tutorial/stdunique_ptr/ |
| std::shared_ptr | https://www.learncpp.com/cpp-tutorial/stdshared_ptr/ |
| Circular dependency issues with std::shared_ptr, and std::weak_ptr | https://www.learncpp.com/cpp-tutorial/circular-dependency-issues-with-stdshared_ptr-and-stdweak_ptr/ |
| Chapter 22 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-22-summary-and-quiz/ |
| Object relationships | https://www.learncpp.com/cpp-tutorial/object-relationships/ |
| Composition | https://www.learncpp.com/cpp-tutorial/composition/ |
| Aggregation | https://www.learncpp.com/cpp-tutorial/aggregation/ |
| Association | https://www.learncpp.com/cpp-tutorial/association/ |
| Dependencies | https://www.learncpp.com/cpp-tutorial/dependencies/ |
| Container classes | https://www.learncpp.com/cpp-tutorial/container-classes/ |
| std::initializer_list | https://www.learncpp.com/cpp-tutorial/stdinitializer_list/ |
| Chapter 23 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-23-summary-and-quiz/ |
| Introduction to inheritance | https://www.learncpp.com/cpp-tutorial/introduction-to-inheritance/ |
| Basic inheritance in C++ | https://www.learncpp.com/cpp-tutorial/basic-inheritance-in-c/ |
| Order of construction of derived classes | https://www.learncpp.com/cpp-tutorial/order-of-construction-of-derived-classes/ |
| Constructors and initialization of derived classes | https://www.learncpp.com/cpp-tutorial/constructors-and-initialization-of-derived-classes/ |
| Inheritance and access specifiers | https://www.learncpp.com/cpp-tutorial/inheritance-and-access-specifiers/ |
| Adding new functionality to a derived class | https://www.learncpp.com/cpp-tutorial/adding-new-functionality-to-a-derived-class/ |
| Calling inherited functions and overriding behavior | https://www.learncpp.com/cpp-tutorial/calling-inherited-functions-and-overriding-behavior/ |
| Hiding inherited functionality | https://www.learncpp.com/cpp-tutorial/hiding-inherited-functionality/ |
| Multiple inheritance | https://www.learncpp.com/cpp-tutorial/multiple-inheritance/ |
| Chapter 24 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-24-summary-and-quiz/ |
| Pointers and references to the base class of derived objects | https://www.learncpp.com/cpp-tutorial/pointers-and-references-to-the-base-class-of-derived-objects/ |
| Virtual functions and polymorphism | https://www.learncpp.com/cpp-tutorial/virtual-functions/ |
| The override and final specifiers, and covariant return types | https://www.learncpp.com/cpp-tutorial/the-override-and-final-specifiers-and-covariant-return-types/ |
| Virtual destructors, virtual assignment, and overriding virtualization | https://www.learncpp.com/cpp-tutorial/virtual-destructors-virtual-assignment-and-overriding-virtualization/ |
| Early binding and late binding | https://www.learncpp.com/cpp-tutorial/early-binding-and-late-binding/ |
| The virtual table | https://www.learncpp.com/cpp-tutorial/the-virtual-table/ |
| Pure virtual functions, abstract base classes, and interface classes | https://www.learncpp.com/cpp-tutorial/pure-virtual-functions-abstract-base-classes-and-interface-classes/ |
| Virtual base classes | https://www.learncpp.com/cpp-tutorial/virtual-base-classes/ |
| Object slicing | https://www.learncpp.com/cpp-tutorial/object-slicing/ |
| Dynamic casting | https://www.learncpp.com/cpp-tutorial/dynamic-casting/ |
| Printing inherited classes using operator<< | https://www.learncpp.com/cpp-tutorial/printing-inherited-classes-using-operator/ |
| Chapter 25 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-25-summary-and-quiz/ |
| Template classes | https://www.learncpp.com/cpp-tutorial/template-classes/ |
| Template non-type parameters | https://www.learncpp.com/cpp-tutorial/template-non-type-parameters/ |
| Function template specialization | https://www.learncpp.com/cpp-tutorial/function-template-specialization/ |
| Class template specialization | https://www.learncpp.com/cpp-tutorial/class-template-specialization/ |
| Partial template specialization | https://www.learncpp.com/cpp-tutorial/partial-template-specialization/ |
| Partial template specialization for pointers | https://www.learncpp.com/cpp-tutorial/partial-template-specialization-for-pointers/ |
| Chapter 26 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-26-summary-and-quiz/ |
| The need for exceptions | https://www.learncpp.com/cpp-tutorial/the-need-for-exceptions/ |
| Basic exception handling | https://www.learncpp.com/cpp-tutorial/basic-exception-handling/ |
| Exceptions, functions, and stack unwinding | https://www.learncpp.com/cpp-tutorial/exceptions-functions-and-stack-unwinding/ |
| Uncaught exceptions and catch-all handlers | https://www.learncpp.com/cpp-tutorial/uncaught-exceptions-catch-all-handlers/ |
| Exceptions, classes, and inheritance | https://www.learncpp.com/cpp-tutorial/exceptions-classes-and-inheritance/ |
| Rethrowing exceptions | https://www.learncpp.com/cpp-tutorial/rethrowing-exceptions/ |
| Function try blocks | https://www.learncpp.com/cpp-tutorial/function-try-blocks/ |
| Exception dangers and downsides | https://www.learncpp.com/cpp-tutorial/exception-dangers-and-downsides/ |
| Exception specifications and noexcept | https://www.learncpp.com/cpp-tutorial/exception-specifications-and-noexcept/ |
| std::move_if_noexcept | https://www.learncpp.com/cpp-tutorial/stdmove_if_noexcept/ |
| Chapter 27 summary and quiz | https://www.learncpp.com/cpp-tutorial/chapter-27-summary-and-quiz/ |
| Input and output (I/O) streams | https://www.learncpp.com/cpp-tutorial/input-and-output-io-streams/ |
| Input with istream | https://www.learncpp.com/cpp-tutorial/input-with-istream/ |
| Output with ostream and ios | https://www.learncpp.com/cpp-tutorial/output-with-ostream-and-ios/ |
| Stream classes for strings | https://www.learncpp.com/cpp-tutorial/stream-classes-for-strings/ |
| Stream states and input validation | https://www.learncpp.com/cpp-tutorial/stream-states-and-input-validation/ |
| Basic file I/O | https://www.learncpp.com/cpp-tutorial/basic-file-io/ |
| Random file I/O | https://www.learncpp.com/cpp-tutorial/random-file-io/ |
| Static and dynamic libraries | https://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/ |
| Using libraries with Visual Studio | https://www.learncpp.com/cpp-tutorial/a2-using-libraries-with-visual-studio-2005-express/ |
| Using libraries with Code::Blocks | https://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/ |
| C++ FAQ | https://www.learncpp.com/cpp-tutorial/cpp-faq/ |
| Introduction to C++11 | https://www.learncpp.com/cpp-tutorial/introduction-to-c11/ |
| Introduction to C++14 | https://www.learncpp.com/cpp-tutorial/introduction-to-c14/ |
| Introduction to C++17 | https://www.learncpp.com/cpp-tutorial/introduction-to-c17/ |
| Introduction to C++20 | https://www.learncpp.com/cpp-tutorial/introduction-to-c20/ |
| Introduction to C++23 | https://www.learncpp.com/cpp-tutorial/introduction-to-c23/ |
| The end? | https://www.learncpp.com/cpp-tutorial/appendix-c-the-end/ |
| The Standard Library | https://www.learncpp.com/cpp-tutorial/the-standard-library/ |
| STL containers overview | https://www.learncpp.com/cpp-tutorial/stl-containers-overview/ |
| STL iterators overview | https://www.learncpp.com/cpp-tutorial/stl-iterators-overview/ |
| STL algorithms overview | https://www.learncpp.com/cpp-tutorial/stl-algorithms-overview/ |
| std::string and std::wstring | https://www.learncpp.com/cpp-tutorial/stdstring-and-stdwstring/ |
| std::string construction and destruction | https://www.learncpp.com/cpp-tutorial/stdstring-construction-and-destruction/ |
| std::string length and capacity | https://www.learncpp.com/cpp-tutorial/stdstring-length-and-capacity/ |
| std::string character access and conversion to C-style arrays | https://www.learncpp.com/cpp-tutorial/stdstring-character-access-and-conversion-to-c-style-arrays/ |
| std::string assignment and swapping | https://www.learncpp.com/cpp-tutorial/stdstring-assignment-and-swapping/ |
| std::string appending | https://www.learncpp.com/cpp-tutorial/stdstring-appending/ |
| std::string inserting | https://www.learncpp.com/cpp-tutorial/stdstring-inserting/ |
| 21.11 -- Overloading typecasts | https://www.learncpp.com/cpp-tutorial/overloading-typecasts/ |
| 1.1 -- Statements and the structure of a program | https://www.learncpp.com/cpp-tutorial/statements-and-the-structure-of-a-program/ |
| F.3 -- Constexpr functions (part 3) and consteval | https://www.learncpp.com/cpp-tutorial/constexpr-functions-part-3-and-consteval/ |
| 10.6 -- Explicit type conversion (casting) and static_cast | https://www.learncpp.com/cpp-tutorial/explicit-type-conversion-casting-and-static-cast/ |
| 10.1 -- Implicit type conversion | https://www.learncpp.com/cpp-tutorial/implicit-type-conversion/ |
| See all changes | https://learncpp.com/latest-changes |
| Privacy Policy | https://g.ezoic.net/privacy/learncpp.com |